jwt工具类的封装

用jwt来实现TokenUtils工具类的封装
1、依赖

		<dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>3.8.2</version>
        </dependency>

2、工具类代码如下

package com.yinxin.shop.Utils;

import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class TokenUtils {
        //设置过期时间
        private static final long EXPIRE_DATE=30*60*100000;
        //token秘钥
        private static final String TOKEN_SECRET = "ZCfasfhuaUUHufguGuwu2020BQWE";

        public static String token (String username,String password){

            String token = "";
            try {
                //过期时间
                Date date = new Date(System.currentTimeMillis()+EXPIRE_DATE);
                //秘钥及加密算法
                Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);
                //设置头部信息
                Map<String,Object> header = new HashMap<>();
                header.put("typ","JWT");
                header.put("alg","HS256");
                //携带username,password信息,生成签名
                token = JWT.create()
                        .withHeader(header)
                        .withClaim("username",username)
                        .withClaim("password",password).withExpiresAt(date)
                        .sign(algorithm);
            }catch (Exception e){
                e.printStackTrace();
                return  null;
            }
            return token;
        }

        public static boolean verify(String token){
            /**
             * @desc   验证token,通过返回true
             * @params [token]需要校验的串
             **/
            try {
                Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);
                JWTVerifier verifier = JWT.require(algorithm).build();
                DecodedJWT jwt = verifier.verify(token);
                return true;
            }catch (Exception e){
                e.printStackTrace();
                return  false;
            }
        }
        public static void main(String[] args) {
            String username ="yinxin";
            String password = "666";
            String token = token(username,password);
            System.out.println(token);
            boolean b = verify("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXNzd29yZCI6IjEyMyIsImV4cCI6MTYzNzMwNjE1MywidXNlcm5hbWUiOiJ6aGFuZ3NhbiJ9.MjPxeDOvqwlxuxe_D8kmetsFjjOZyxWRi7BpriMRpjg");
            System.out.println(b);
        }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值