https://blog.csdn.net/cauchy6317/article/details/85123018
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cauchy6317/article/details/85123018
在实现了Oauth2后,我们拿到的jwt中的json是下图的形式。
这里面的json字段是默认的,如果我们想加入一些额外的有用信息该怎么做?
首先,你要实现TokenEhancer(令牌增强器)中的 ehance方法。
public class CustomTokenEnhancer implements TokenEnhancer {
@Override
public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {
User user = (User) authentication.getPrincipal();
final Map<String, Object> additionalInfo = new HashMap<>();
additionalInfo.put("customInfo", "some_stuff_here");
// 注意添加的额外信息,最好不要和已有的json对象中的key重名,容易出现错误
//additionalInfo.put("authorities", user.getAuthorities());
((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(additionalInfo);
return accessToken;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
接下来,要在你的AuthServerConfig中配置tokenEhancer(令牌增强器)如下图
代码如下:
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
// 将增强的token设置到增强链中
TokenEnhancerChain enhancerChain = new TokenEnhancerChain();
enhancerChain.setTokenEnhancers(Arrays.asList(customTokenEnhancer(), jwtAccessTokenConverter()));
endpoints
.tokenStore(jwtTokenStore())
.accessTokenConverter(jwtAccessTokenConverter())
.userDetailsService(userDetailsService)
.tokenEnhancer(enhancerChain);
}
@Bean
public TokenEnhancer customTokenEnhancer() {
return new CustomTokenEnhancer();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
好了,重启项目。
在下一篇Spring Security Oauth2 在资源服务器如何获取jwt中的额外信息中,笔者将和大家一起探讨如何从jwt中取出这些额外信息。
不奢求打赏博主,关注点赞走一走,好不好鸭
spring security oauth2 交流群:
推荐博客:https://blog.csdn.net/buxiaoxia/article/details/64123823
有 0 个人打赏
————————————————
版权声明:本文为CSDN博主「cauchy6317在csdn」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cauchy6317/article/details/85123018