1. 程式人生 > 實用技巧 >JJWT - 2分鐘快速學會實現前後端分離身份驗證

JJWT - 2分鐘快速學會實現前後端分離身份驗證

  1. 匯入jar包
<dependencies>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.9.1</version>
        </dependency>
</dependencies>
  1. 編寫工具類
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;

public class JwtUtil {
    private final static String key = "!@#$%^&*IUYTJ$^DSADSsa2132ADSASDA#^%$^$%^$&DYsaFGGS#@$%$#^";

    public static String createToken() {
        return Jwts.builder()
                .setIssuedAt(new Date())//設定建立時間
                .claim("username", "張三")//設定私有欄位
                .setExpiration(new Date(System.currentTimeMillis() + 1000 * 60*15))//設定過期時間15分鐘
                .signWith(SignatureAlgorithm.HS512, key)//加密
                .compact();//打包
    }

    public static boolean verify(String token) {
        return getTokenClaims(token) != null;
    }

    public static Claims getTokenClaims(String token) {
        try {
            return Jwts.parser().setSigningKey(key).parseClaimsJws(token).getBody();
        } catch (Exception e) {
            return null;
        }
    }

    public static void main(String[] args) {
        String token = createToken();
        System.out.println(token);
        System.out.println(verify(token));
        System.out.println(getTokenClaims(token).get("username"));
    }
}