首页 > 其他 > 详细

使用JWT替换默认token

时间:2019-11-20 14:49:47      阅读:281      评论:0      收藏:0      [点我收藏+]

需要用JwtTokenStore的token生成策略

1.JwtTokenStore不管token的具体生成,而是交给JwtAccessTokenConverter去做。

技术分享图片

2.在CustomAuthorizationServerConfig中注入jwtAccessTokenConverter并重写configure(AuthorizationServerEndpointsConfigurer endpoints)方法

技术分享图片
技术分享图片

3.至此生成的jwt令牌(无状态)就替换掉了spring默认的token(有状态,通过UUID产生),如果想添加自定义的额外的信息塞进jwt令牌可通过(TokenEnhancer)

1)创建TokenEnhancerBean
技术分享图片
2)在CustomAuthorizationServerConfig中注入TokenEnhancer
技术分享图片
3)重写configure(AuthorizationServerEndpointsConfigurer endpoints)方法
技术分享图片
4)自定义CusJwtTokenEnhancer
技术分享图片
5)spring oauth并不会去解析我们自定义的additionalInfo,而是只会解析他标准中的字段,如果想要拿到自定义的信息,就要引入jwt

 <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.9.0</version>
 </dependency>
代码中处理
@GetMapping("/me")
public Object getCurrentUser(Authentication user,HttpServletRequest request) throws Exception {

    String token = StringUtils.substringAfter(request.getHeader("Authorization"), "bearer ");
    Claims claims = Jwts.parser().setSigningKey("cus".getBytes("UTF-8"))
                .parseClaimsJws(token).getBody();
    String company = (String) claims.get("company");
    log.info("---------->"+company);
    return user;
}

使用JWT替换默认token

原文:https://www.cnblogs.com/qq-7895/p/11840085.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!