当前位置:   article > 正文

Spring Boot 生成与解析Jwt

Spring Boot 生成与解析Jwt

spring-boot.jpg

Spring Boot 生成与解析Jwt

Maven依赖

<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt</artifactId>
    <version>0.9.1</version>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

生成&解析

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;

@Slf4j
public class TestMain {

    @Test
    public void run() {
        Map<String, Object> 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);
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

工具类

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<String, Object> 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;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

使用工具类

public class TestMain {
    @Test
    public void run() {
        Map<String, Object> 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);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/210841?site
推荐阅读
相关标签
  

闽ICP备14008679号