首页  

springboot中使用 JWT     所属分类 springboot 浏览量 1497
JWT JSON Web Token

Token的优点
不需要在服务端保存会话信息,特别适用于分布式微服务
简洁:可以通过URL,POST参数或者是在HTTP头参数发送,数据量小,传输速度快
自包含:token包含了用户信息,避免多次查询数据库
Token以Json格式保存在客户端,跨语言


JWT 用.分割成三部分
Header Payload Signature


pom增加 依赖 com.auth0:java-jwt:3.8.2

JwtController.java	
提供 rest API , 
login   登录获取token 
getUserInfo  根据 token 获取用户信息

JwtTokenInterceptor.java
拦截器类 ,被保护url  需要 输入 token 
token 可以放在 header 或 参数中

JwtUtil.java
jwt工具类  生成 和 解析 


   	
JwtTokenInterceptorConfig.java  
配置类 ,配置拦截器 ,拦截指定的url
没有使用注解 ,PathPatterns  
excludePath  


@Configuration
public  class JwtTokenInterceptorConfig implements WebMvcConfigurer  {
	
	 private final JwtTokenInterceptor jwtTokenInterceptor;

	    public JwtTokenInterceptorConfig(){
	        this.jwtTokenInterceptor = new JwtTokenInterceptor();
	    }

	    @Override
	    public void addInterceptors(InterceptorRegistry registry){
	        List<String> excludePath = new ArrayList<>();
	        
	        excludePath.add("/jwt/login");  

	        registry.addInterceptor(jwtTokenInterceptor)
	                .addPathPatterns("/jwt/**")
	                .excludePathPatterns(excludePath);
	        WebMvcConfigurer.super.addInterceptors(registry);

	    }
}



http://127.0.0.1:8090/jwt/login?user=admin&pwd=123456
输入用户名密码,获取token

http://127.0.0.1:8090/jwt/getUserInfo?token=A.B.C
使用token 访问被保护的 API

com.auth0.jwt.exceptions.TokenExpiredException: The Token has expired on XXX
com.auth0.jwt.exceptions.JWTDecodeException: The token was expected to have 3 parts, but got 1.
com.auth0.jwt.exceptions.JWTDecodeException: The string '' doesn't have a valid JSON format.


完整代码
https://gitee.com/dyyx/springboothello/tree/master/src/main/java/demo/jwt

上一篇     下一篇
maven-assembly-plugin 和 maven-shade-plugin

领悟人生金句

OLAP术语

java访问修饰符

java内部类

java泛型