使用JWT替换默认token


需要用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;
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM