JWT + java 速成
2021/11/4 22:16:27
本文主要是介绍JWT + java 速成,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
JWT
1.是什么?Json Web Token的简称
2.JWT的结构是?Header + Payload + Sign
3.如何搞
1.pom.xml加依赖
<!-- JWT相关 -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>${io.jsonwebtoken.jjwt.version}</version>
</dependency>
2.构建Token
private static final long EXPIRE = 1000 * 60 * 60 * 24 * 7;
String token = Jwts.builder()
//第一部分Header
.setHeaderParam("typ","JWT") //header中的类型
.setHeaderParam("alg","HS256") //header中加密算法
//第二部分Payload
.setSubject("主题名") //主题
.claim("key1", "value1") //需要携带的kv1
.claim("key2", "value2") //需要携带的kv2
.setIssuedAt(new Date()) //签发时间
.setExpiration(new Date(System.currentTimeMillis() + EXPIRE)) //到期时间
//第三部分Sign
.signWith(SignatureAlgorithm.HS256, "自定义的秘钥")
//拼接
.compact();
3.解密Token
public static Claims checkJWT(String token) {
Claims claims = Jwts.parser().setSigningKey("自定义的秘钥")
.parseClaimsJws(token).getBody();
return claims;
}
通过claims.get("key1")/.getXXX获取kv值。
4.流程
1.登录,用手机号查库,获得密码
2.匹配密码,正确后,生成token令牌,把用户需要全局共享的信息,放入claim(k,v)里
3.得到一个String后,返回给用户。
4.用户将这个String放入header中,对api进行请求
5.拦截器Interceptor前置方法,获取header中的token,执行解密方法checkJWT,获得Claims。
6.claims为空就是过期或者token作假,有数据就get方法,将共享值拆解,给保存在全局方法里等待使用。
注:同事使用的是,来共享全局变量
public static ThreadLocal<LoginUser> threadLocal = new ThreadLocal<>();
这篇关于JWT + java 速成的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程
- 2024-11-26Springboot单体架构搭建资料:新手入门教程
- 2024-11-26Springboot单体架构搭建资料详解与实战教程
- 2024-11-26Springboot框架资料:新手入门教程
- 2024-11-26Springboot企业级开发资料入门教程
- 2024-11-26SpringBoot企业级开发资料详解与实战教程
- 2024-11-26Springboot微服务资料:新手入门全攻略