《Spring微服务实战》第七章 保护微服务(问题与解答)
2018-06-05 本文已影响0人
9527的编程梦
问题一: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