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 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泛型