背景
在spring-security-oauth组件中获取用户信息接口,第三方返回的是
{
"id":"xxxx",
"attr":{
"xx":""
}
}
在security-oauth中解析用户信息写了
public Authentication extractAuthentication(Map<String, ?> map) {
//其中username,spring定义了固定值,并且没有配置final String USERNAME = "user_name";
if (map.containsKey(USERNAME)) {
Object principal = map.get(USERNAME);
Collection<? extends GrantedAuthority> authorities = getAuthorities(map);
if (userDetailsService != null) {
UserDetails user = userDetailsService.loadUserByUsername((String) map.get(USERNAME));
authorities = user.getAuthorities();
principal = user;
}
return new UsernamePasswordAuthenticationToken(principal, "N/A", authorities);
}
return null;
}
方案
- 找spring有没有配置更改这个值
final String USERNAME = "user_name";
本人没找到 - 重写源码
1.找到源码位置
2.在项目中建相同的包名
3.重写
4.执行
maven clean install