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

问题一:OAuth2Authentication的值为null

  • 问题描述:
    在代码清单7-1中,有以下这么一段代码:
    @RequestMapping(value = { "/user" }, produces = "application/json")
    public Map user(OAuth2Authentication user) {
        Map 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

你可能感兴趣的:(《Spring微服务实战》第七章 保护微服务(问题与解答))