五分钟学会如何基本使用JJWT!!!

✨✨✨这里是秋刀鱼不做梦的BLOG

✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客

目录

[一、JJWT 是什么?](#一、JJWT 是什么?)

二。基本使用

(1)引入依赖

[(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"));
    }
}

以上就是本篇文章的全部内容了~~~

相关推荐
dialect_5 小时前
KMP算法
开发语言·c++·算法
captain3765 小时前
MyBatis(入门5)其他查询操作
java·数据库·spring boot·mybatis
Novproxy_Z5 小时前
商用代理避坑:如何识别商家拿机房 IP 冒充住宅 IP
java·网络·tcp/ip
总要学点什么5 小时前
第89篇:三维特效-螺旋圆效果——让螺旋臂卷起一圈圈外扩的涟漪
开发语言·javascript·ecmascript·webgl·cesium·空间分析·1024程序员节
文丑颜不良啊6 小时前
LeetCode1481~1500题目解析
java·leetcode
2601_962885726 小时前
quotes 字段全解:涨跌幅、振幅、换手率的口径与单位
java·前端·spring
前端精髓6 小时前
调用openrouter的免费API模型
java·前端·javascript
步行cgn7 小时前
Spring MVC 拦截器 Interceptor 详解:从执行流程到实战应用
java·spring·mvc
文丑颜不良啊7 小时前
LeetCode1381~1400题目解析
java·leetcode
开开心心_Every7 小时前
快速隐藏程序工具自定义快捷键一键切换
java·开发语言·前端·spring·智能手机·word·intellij-idea