✨✨✨这里是秋刀鱼不做梦的BLOG
✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客
目录
[一、JJWT 是什么?](#一、JJWT 是什么?)
[(2)生成密钥(使用HS256 签名)](#(2)生成密钥(使用HS256 签名))
[(3)封装 JWT 工具类](#(3)封装 JWT 工具类)
一、JJWT 是什么?
JJWT 是一个用于在 Java 项目中生成和验证 JSON Web Token(JWT)的库,它由 io.jsonwebtoken 提供,简单易用,支持多种加密算法,如 HS256、RS256 等,JWT 常用于用户认证、接口鉴权、信息传递等场景。
二。基本使用
(1)引入依赖
------首先先引入JJWT所需的依赖
XML
<!-- 核心API -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>0.11.5</version>
</dependency>
<!-- 底层实现包 -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>0.11.5</version>
<scope>runtime</scope>
</dependency>
<!-- JSON 处理工具,使用 Jackson -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId> <!-- jjwt-gson 也可以 -->
<version>0.11.5</version>
<scope>runtime</scope>
</dependency>
(2)生成密钥(使用HS256 签名)
------在测试方法中或随便一个main方法中生成一共密钥用户后续使用
java
// 生成安全的随机密钥
Key key = Keys.secretKeyFor(SignatureAlgorithm.HS256);
// 将密钥编码成 Base64 字符串(用于配置文件等)
String base64Key = Encoders.BASE64.encode(key.getEncoded());
System.out.println("Base64 密钥:" + base64Key);
(3)封装 JWT 工具类
------通常我们会将JWT封装为一共工具类,其****中包含 token 的生成和解析方法
java
public class JWTUtil {
// 秘钥字符串(从配置文件中获取较安全)
private static final String SECRET_STRING = Constants.USER_LOGIN_KEY;
// 转换为 key 对象
private static final Key key = Keys.hmacShaKeyFor(SECRET_STRING.getBytes(StandardCharsets.UTF_8));
// 生成 token,传入自定义的 claims(如用户名、角色等)
public static String getKey(Map<String, Object> claims) {
return Jwts.builder()
.setClaims(claims) // 设置自定义内容
.signWith(key) // 设置签名密钥
.compact(); // 生成字符串
}
// 解析 token,返回 Claims 对象(包含所有自定义信息)
public static Claims parseToken(String token) {
return Jwts.parserBuilder()
.setSigningKey(key) // 设置签名密钥
.build()
.parseClaimsJws(token) // 解析 token
.getBody(); // 获取 Claims 部分
}
}
三、使用示例
------以下为一个使用案例
java
public class TestJWT {
public static void main(String[] args) {
// 准备用户信息
Map<String, Object> userInfo = new HashMap<>();
userInfo.put("username", "zhangsan");
userInfo.put("role", "admin");
// 生成 token
String token = JWTUtil.getKey(userInfo);
System.out.println("生成的 JWT:" + token);
// 解析 token
Claims claims = JWTUtil.parseToken(token);
System.out.println("解析出的用户信息:");
System.out.println("用户名:" + claims.get("username"));
System.out.println("角色:" + claims.get("role"));
}
}
以上就是本篇文章的全部内容了~~~