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>
Token生成与解析
复制代码
复制代码
 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
复制代码

 

Token

一、作用

  1、token可以对用户身份信息进行加密,返回给客户端自己保存

  2、客户端可以携带 token 访问业务相关的其他系统,而不用重新登录

二、注意事项

  保证加密使用的是同一个密钥

三、示意图

 

posted @   青核桃啊  阅读(111)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示