java:JWT的简单例子

【pom.xml】

xml 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.3.12.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    <version>2.3.12.RELEASE</version>
</dependency>
<dependency>
    <groupId>com.auth0</groupId>
    <artifactId>java-jwt</artifactId>
    <version>3.19.1</version>
</dependency>

【JwtTest.java】

java 复制代码
package com.chz.myJWT.utils;

import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.HashMap;

public class JwtTest {

    public static final String SECRET = "I_am_chz";

    public static String createJwtToken()
    {
        HashMap<String, Object> headers = new HashMap<>();

        Calendar expires = Calendar.getInstance();
        expires.add(Calendar.MINUTE, 30);       // 过期时间,60s


        String jwtToken = JWT.create()
                // 第一部分Header
                .withHeader(headers)
                // 第二部分Payload
                .withClaim("userId", 20)
                .withClaim("userName", "chz")
                .withExpiresAt(expires.getTime())
                // 第三部分Signature
                .sign(Algorithm.HMAC256(SECRET));
        return jwtToken;
    }

    public static DecodedJWT parseJwtToken(String jwtToken)
    {
        JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256(SECRET)).build();
        DecodedJWT decodedJWT = jwtVerifier.verify(jwtToken);
        return decodedJWT;
    }

    public static void main(String[] args)
    {
        String jwtToken = createJwtToken();
        System.out.println("jwtToken: " + jwtToken);


        DecodedJWT decodedJWT = parseJwtToken(jwtToken);
        System.out.println("userId: " + decodedJWT.getClaim("userId").asInt());
        System.out.println("userName: " + decodedJWT.getClaim("userName").asString());
        System.out.println("expiresAt: " + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(decodedJWT.getExpiresAt()));
    }
}

运行【JwtTest】

相关推荐
To Be Clean Coder6 分钟前
【Spring源码】createBean如何寻找构造器(四)——类型转换与匹配权重
java·后端·spring
-孤存-18 分钟前
SpringBoot核心注解与配置详解
java·spring boot·后端
Hx_Ma1632 分钟前
BCrypt
java
We....33 分钟前
鸿蒙与Java跨平台Socket通信实战
java·服务器·tcp/ip·arkts·鸿蒙
笃行客从不躺平36 分钟前
Token 复习
java·分布式·spring cloud
Albert Edison1 小时前
【Python】函数
java·linux·python·pip
2301_818732061 小时前
项目启动报错,错误指向xml 已解决
xml·java·数据库·后端·springboot
码农阿豪2 小时前
Oracle 到金仓数据库迁移实战:一次真正“落地”的国产替代之旅
java·数据库·oracle
小王不爱笑1322 小时前
SpringBoot 整合 Ollama + 本地 DeepSeek 模型
java·spring boot·后端
毕设源码-钟学长2 小时前
【开题答辩全过程】以 高校宿舍分配系统设计与实现为例,包含答辩的问题和答案
java