最新JWT工具类

**

JJWT工具类

**

  <!--JWT-->
        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>3.7.0</version>
        </dependency>
package com.bc.Util;


import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.exceptions.JWTDecodeException;
import com.auth0.jwt.interfaces.DecodedJWT;
import lombok.SneakyThrows;
import org.junit.Test;

import java.security.MessageDigest;
import java.util.Date;

/**
 * JWT工具类
 *
 * @author bool
 */
public class JwtUtils {


    /**
     * 有效期24小时
     */
    private static final long EXPIRE_TIME = 24 * 60 * 60 * 1000;
    /**
     * 使用固定的解密秘钥
     */
    private static final String SECRET = "PisyGFJhgzrctMOofvaHLuiNFOmktedw";

    /**
     * 校验是否正确
     *
     * @param token
     * @param
     * @return
     */
    public static boolean verify(String token) {
        try {
            // 根据密码生成JWT效验器
            Algorithm algorithm = Algorithm.HMAC256(SECRET);
            JWTVerifier verifier = JWT.require(algorithm)
                    .build();
            // 效验TOKEN
            verifier.verify(token);
            return true;
        } catch (Exception exception) {
            return false;
        }
    }


    /**
     * 从Token中解密数据
     *
     * @param token
     * @return
     */
    public static String getInfo(String token, String name) {
        try {
            DecodedJWT jwt = JWT.decode(token);
            return jwt.getClaim(name).asString();
        } catch (JWTDecodeException e) {
            return null;
        }
    }


    /**
     * 生成JWT Token字符串
     *
     * @param username
     * @return
     */
    public static String sign(String username, String id) {
        Date date = new Date(System.currentTimeMillis() + EXPIRE_TIME);
        Algorithm algorithm = Algorithm.HMAC256(SECRET);
        // 附带username信息
        return JWT.create()
                .withClaim("username", username)
                .withClaim("id", id)
                .withExpiresAt(date).sign(algorithm);
    }


    @SneakyThrows
    @Test
    public void fangda() {
        //生成token签名
        String token = sign("111", "222");
        //验证是否过期
        System.out.println(verify(token));
        //获取信息
        System.out.println(getInfo(token, "username"));
        System.out.println(getInfo(token, "id"));
        Thread.sleep(5000);
        System.out.println(verify(token));

    }


}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值