JWT令牌技术 —— token【Web后端开发进阶】
JWT
一、介绍
全称:JSON Web Token ,用于对应用程序上的用户进行身份标记
本质上就是一个经过加密处理与校验处理的字符串,它由三部分组成:
头信息(Header):记录令牌类型和签名算法,例如:{ "alg" : "HS256", "typ" : "JWT" }
有效载荷(Payload):记录一些自定义能够区分身份的非敏感信息,例如:{ "id" : "1", "username" : "tom" }
签名(Signature):用于保证 Token 在传输过程中不被篡改,它是 header、payload,加入指定算法计算得来的。
二、使用流程
三、代码实现

1 <!--Token生成与解析--> 2 <dependency> 3 <groupId>io.jsonwebtoken</groupId> 4 <artifactId>jjwt</artifactId> 5 <version>0.9.1</version> 6 </dependency>

1 package com.itheima.test; 2 3 import io.jsonwebtoken.Claims; 4 import io.jsonwebtoken.Jwts; 5 import io.jsonwebtoken.SignatureAlgorithm; 6 import org.junit.jupiter.api.Test; 7 8 import java.util.Date; 9 import java.util.HashMap; 10 import java.util.Map; 11 12 public class JwtTest { 13 14 //生成token 15 @Test 16 public void genJwt() { 17 Map<String, Object> claims = new HashMap<>(); 18 claims.put("id", 1); 19 claims.put("username", "Tom"); 20 21 String jwt = Jwts.builder(). 22 setClaims(claims) //自定义内容(载荷) 23 .signWith(SignatureAlgorithm.HS256, "itheima") //签名算法和盐 24 .setExpiration(new Date(System.currentTimeMillis() + 12 * 3600 * 1000)) //有效期 25 .compact(); 26 System.out.println(jwt); 27 } 28 29 //校验token 30 @Test 31 public void checkJwt() { 32 Claims claims = Jwts.parser() 33 .setSigningKey("itheima")//盐 34 .parseClaimsJws("eyJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwiZXhwIjoxNjc3MzU3MjE0LCJ1c2VybmFtZSI6IlRvbSJ9.RBtRZGHUefLElDWWIlQRoy0_Dl71sZysPP61vVa46oo")//上一步得到的值 35 .getBody(); 36 System.out.println(claims); 37 } 38 }
Token
一、作用
1、token可以对用户身份信息进行加密,返回给客户端自己保存
2、客户端可以携带 token 访问业务相关的其他系统,而不用重新登录
二、注意事项
保证加密使用的是同一个密钥
三、示意图
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库