2023-10 最新jsonwebtoken-jjwt 0.12.3 基本使用

4,635次阅读
没有评论

共计 1889 个字符,预计需要花费 5 分钟才能阅读完成。

导入依赖

        dependency>
            groupId>io.jsonwebtokengroupId>
            artifactId>jjwtartifactId>
            version>0.12.3version>
        dependency>

包括了下面三个依赖, 所以导入上面一个就 OK 了

dependency>
    groupId>io.jsonwebtokengroupId>
    artifactId>jjwt-apiartifactId>
    version>0.12.3version>
dependency>
dependency>
    groupId>io.jsonwebtokengroupId>
    artifactId>jjwt-implartifactId>
    version>0.12.3version>
    scope>runtimescope>
dependency>
dependency>
    groupId>io.jsonwebtokengroupId>
    artifactId>jjwt-jacksonartifactId> 
    version>0.12.3version>
    scope>runtimescope>
dependency>

之前很多方法都弃用了, 好多博文也还是用的废弃的方法

import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.security.Keys;
import io.jsonwebtoken.security.SecureDigestAlgorithm;

import javax.crypto.SecretKey;
import java.sql.Timestamp;
import java.time.Instant;
import java.util.Date;
import java.util.UUID;


public class TokenUtil {
    
    public static final int ACCESS_EXPIRE = 60;
    
    private final static SecureDigestAlgorithmSecretKey, SecretKey> ALGORITHM = Jwts.SIG.HS256;
    
    private final static String SECRET = "secretKey";
    
    public static final SecretKey KEY = Keys.hmacShaKeyFor(SECRET.getBytes());
    
    private final static String JWT_ISS = "Tiam";
    
    private final static String SUBJECT = "Peripherals";

    
    public static String genAccessToken(String username) {
        
        String uuid = UUID.randomUUID().toString();
        Date exprireDate = Date.from(Instant.now().plusSeconds(ACCESS_EXPIRE));

        return Jwts.builder()
                
                .header()
                .add("typ", "JWT")
                .add("alg", "HS256")
                .and()
                
                .claim("username", username)
                
                .id(uuid)
                
                .expiration(exprireDate)
                
                .issuedAt(new Date())
                
                .subject(SUBJECT)
                
                .issuer(JWT_ISS)
                
                .signWith(KEY, ALGORITHM)
                .compact();
    }
    
    public static JwsClaims> parseClaim(String token) {
        return Jwts.parser()
                .verifyWith(KEY)
                .build()
                .parseSignedClaims(token);
    }

    public static JwsHeader parseHeader(String token) {
        return parseClaim(token).getHeader();
    }

    public static Claims parsePayload(String token) {
        return parseClaim(token).getPayload();
    }

}

参考:

  • https://github.com/jwtk/jjwt
  • https://jwt.io/
  • https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.4

原文地址: 2023-10 最新 jsonwebtoken-jjwt 0.12.3 基本使用

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-10-07发表,共计1889字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)