小工具知识网

当前位置: 首页 > 行业知识 > Spring Boot 生成与解析Jwt

行业知识

Spring Boot 生成与解析Jwt

2026-11-10 15:52:09 来源:互联网转载

Spring Boot 生成与解析Jwt

Maven���赖

    io.jsonwebtoken    jjwt    0.9.1

生成&解析

package yang;import io.jsonwebtoken.Claims;import io.jsonwebtoken.Jwts;import io.jsonwebtoken.SignatureAlgorithm;import lombok.extern.slf4j.Slf4j;import org.junit.Test;import java.util.Date;import java.util.HashMap;import java.util.Map;@Slf4jpublic class TestMain {    @Test    public void run() {        Map claims = new HashMap();        claims.put("id", 1);        claims.put("username", "宇阳");        // 创建Jwt        String jwt = Jwts.builder()                .setClaims(claims) // 载荷:自定义的数据                .signWith(SignatureAlgorithm.HS256, "yuyang") // 签名算法                .setExpiration(new Date(System.currentTimeMillis() + 24 * 3600 * 1000)) // 有效期:以当前的时间戳往后加一天                .compact(); // 转换为字符串        log.info("生成Jwt:{}", jwt);        // 解析Jwt        Claims data = Jwts.parser()                .setSigningKey("yuyang") // 自定义解密的秘钥                .parseClaimsJws("eyJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwiZXhwIjoxNzA4OTMwMjMwLCJ1c2VybmFtZSI6IuWuh-mYsyJ9.6Iqhflkx900okTibiyLuYjwCDSgLBgYJ0RWB4-jt2ME") // 指定需要解析的Token令牌                .getBody();        log.info("解析Jwt:{}", data);    }}

工具类

package yang.utils;import io.jsonwebtoken.Claims;import io.jsonwebtoken.Jwts;import io.jsonwebtoken.SignatureAlgorithm;import java.util.Date;import java.util.Map;public class JwtUtils {    private static String signKey = "yuyang"; //签名密钥    private static Long expire = 43200000L; //有效时间:12小时 单位毫秒    // 生成Jwt    public static String createJwt(Map claims){        String jwt = Jwts.builder()                .addClaims(claims)                .signWith(SignatureAlgorithm.HS256, signKey)                .setExpiration(new Date(System.currentTimeMillis() + expire))                .compact();        return jwt;    }    // 解析Jwt    public static Claims parseJWT(String jwt){        Claims claims = Jwts.parser()                .setSigningKey(signKey)                .parseClaimsJws(jwt)                .getBody();        return claims;    }}

使用工具类

public class TestMain {    @Test    public void run() {        Map claims = new HashMap();        claims.put("id", 1);        claims.put("username", "宇阳");        // 创建Jwt        String jwt = JwtUtils.createJwt(claims);        log.info("生成Jwt:{}", jwt);        // 解析Jwt        Claims data = JwtUtils.parseJWT(jwt);        log.info("解析Jwt:{}", data);    }}

上一篇:【Flutter】多语言方案二:GetX 版

下一篇:s码英文颜色怎么写?