JWT-token

JWT

  • 通过JWT生成token令牌来验证用户是否登录

导入依赖

   <!--    JWT坐标      -->
        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>3.18.2</version>
        </dependency>

具体方法

/***
 * jwt工具类
 */
public class JWTUtil {
    //密钥
    private static  final String SECRET = "123456789";

    //过期时间
    private static final long EXPIRE_TIME = 7 * 24 * 60 * 60 * 1000;

    /*
     * token签发 方式一
     public static String sign (Integer userId, String userName){

        //date对象
        Date expiration = new Date(System.currentTimeMillis() + EXPIRE_TIME);

        //withHeader 需要传递map
        Map<String,Object> map = new HashMap();

        String token = JWT.create()
                .withHeader(map) //可以省略
                .withClaim("userId",userId)
                .withClaim("userName",userName)
                .withExpiresAt(expiration)
                .sign(Algorithm.HMAC256(SECRET));
        return token;
    }*/

    /**
     * token签发 方式二
     * @param map
     * @return
     */
    public static String sign (Map<String, String> map){

        //  七天过期
        Calendar instance = Calendar.getInstance();
        instance.add(Calendar.DATE,7);

        final JWTCreator.Builder builder = JWT.create();

        map.forEach((k,v) ->{
            builder.withClaim(k,v);
        });

        String token = builder.withExpiresAt(instance.getTime())
                .sign(Algorithm.HMAC256(SECRET));

        return token;
    }

    /**
     * 验证token
     * @param token
     * @return
     */
    public static Boolean verify (String token){
        DecodedJWT verify = null;
        try {
            verify = JWT.require(Algorithm.HMAC256(SECRET)).build().verify(token);
            return true;
        }catch (SignatureVerificationException e){
            System.out.println("无效签名");
            return false;
        }catch (TokenExpiredException e){
            System.out.println("token过期");
            return false;
        }catch (AlgorithmMismatchException e){
            System.out.println("算法不一致");
            return false;
        }catch (Exception e){
            System.out.println("无效token");
            return false;
        }
    }

    /**
     * 从 payload 可以直接获取存入信息
     * @param token
     * @return
     */
    public static String getUser(String token){
        DecodedJWT verify = JWT.decode(token);
        String userName = verify.getClaim("name").asString();
        return userName;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值