大飞_dafei

导航

jjwt 简单使用---Java

jjwt 简单使用---Java

<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt</artifactId>
    <version>0.9.1</version>
</dependency>
View Code

 

package com.example.fei.service;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.stereotype.Component;

import java.util.Date;


/**
 * 参考资料:
 *    https://github.com/jwtk/jjwt
 *    https://stormpath.com/blog/jwt-java-create-verify
 */
@Component
public class TokenService {

    private final static String myApiKeySecret = "fei_Secret_123456"; // 这里写入你的Secret

    /**
     * 创建 token
     * @return {}
     */
    public String createToken() {
        long nowMillis  = System.currentTimeMillis();
        Date now = new Date(nowMillis);
        Date exp = new Date(nowMillis + 1000 * 30); // 过期时间 30秒
        SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256; // 签名算法

        JwtBuilder builder = Jwts.builder()
                .setId("fei123") // 置唯一编号
                // .setIssuedAt(now)  //设置签发日期
                // .setExpiration(exp) // 设置过期时间
                // .setAudience("iot")
                // .setIssuer("fei") // 设置发行人
                .setSubject( "fei_setSubject" )
                .claim("userName", "username_01")
                .claim("userPwd", "123456")
                .signWith(signatureAlgorithm, myApiKeySecret); // 设置签名 使用HS256算法,并设置SecretKey(字符串)

        return builder.compact();
    }

    /**
     * 校验 token 是否正确
     * @param jwt String 用createToken方法中的返回值
     * @return {}
     */
    public Boolean parseJWT(String jwt) {
        try {
            Claims claims = Jwts.parser()
                    .setSigningKey(myApiKeySecret)
                    .parseClaimsJws(jwt)
                    .getBody();

            Object userName = claims.get("userName");
            Object userPwd = claims.get("userPwd");
            String subject = claims.getSubject();

            System.out.println(userName.toString());
            System.out.println(userPwd.toString());
            System.out.println(subject);

            return true;
        } catch (Exception e) {
            System.out.println("Token格式有误");
            return false;
        }
    }
}

 

 

 

footer底部

jjwt官方文档

jwt-demo

 

posted on 2022-02-07 00:57  大飞_dafei  阅读(157)  评论(0编辑  收藏  举报