《Spring微服务实战》第七章 保护微服务(问题与解答)

问题一:OAuth2Authentication的值为null

  • 问题描述:
    在代码清单7-1中,有以下这么一段代码:
    @RequestMapping(value = { "/user" }, produces = "application/json")
    public Map<String, Object> user(OAuth2Authentication user) {
        Map<String, Object> userInfo = new HashMap<>();
        userInfo.put("user", user.getUserAuthentication().getPrincipal());
        userInfo.put("authorities", AuthorityUtils.authorityListToSet(user.getUserAuthentication().getAuthorities()));
        return userInfo;
    }

在将OAuth2访问令牌作为首部去请求/user时,代码中user的值一直为null。

  • 原因:Spring Cloud的版本由1.4升到1.5时,有关OAuth过滤器的order由3变为了1,这导致了上述代码中的user变为null。
  • 解决方案:

1.第一种方案是将Spring Cloud的版本降为1.4
2.第二种方案是在application.yml文件中,添加以下属性:

security:
  oauth2:
    resource:
      filter-order: 3
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容