• java jwt工具类,生成和解析token


    相关jar包下载:

    链接:https://pan.baidu.com/s/1Bdd2cJubPPdKxJUDCbdM4w
    提取码:xlvm
    commons-codec-1.11.jar jar包尽量用高版本的,低版本会报错org.apache.commons.codec.binary.Base64.encodeBase64URLSafeString,最低版本是哪个没有进行测试。

    jwt工具类:

    import java.util.Date;
    import java.util.HashMap;
    import java.util.Map;
    
    import com.auth0.jwt.JWT;
    import com.auth0.jwt.JWTVerifier;
    import com.auth0.jwt.algorithms.Algorithm;
    import com.auth0.jwt.interfaces.DecodedJWT;
    
    public class JwtUtil {
        //过期时间
        private static final long EXPIRE_TIME = 15 * 60 * 1000;
        //私钥
        private static final String TOKEN_SECRET = "privateKey";
        
        /**
         * 生成签名,15分钟过期
         * @param **username**
        * @param **password**
        * @return
         */
        public static String sign(Long userId) {
            try {
                // 设置过期时间
                Date date = new Date(System.currentTimeMillis() + EXPIRE_TIME);
                // 私钥和加密算法
                Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);
                // 设置头部信息
                Map<String, Object> header = new HashMap<>(2);
                header.put("Type", "Jwt");
                header.put("alg", "HS256");
                // 返回token字符串
                return JWT.create()
                        .withHeader(header)
                        .withClaim("userId", userId)
                        .withExpiresAt(date)
                        .sign(algorithm);
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
        
        /**
         * 检验token是否正确
         * @param **token**
        * @return
         */
        public static Long verify(String token){
            try {
                Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);
                JWTVerifier verifier = JWT.require(algorithm).build();
                DecodedJWT jwt = verifier.verify(token);
                Long userId = jwt.getClaim("userId").asLong();
                return userId;
            } catch (Exception e){
                return 0L;
            }
        }
    }
  • 相关阅读:
    集群项目总结和思考
    centos7安装zabbix
    string方法中字符与Unicode编码的相互转化:fromCharCode(),charCodeAt()
    element-ui @change添加自定义参数
    js ES6字符串的新功能
    js 去除字符串中的空格
    五月份,是金色的
    夏天快要到来了,2019年还有一半多的时间
    自定义element-ui中的图标
    js下拉框:从数组中筛选出匹配的数据
  • 原文地址:https://www.cnblogs.com/ljl-blog/p/11164991.html
Copyright © 2020-2023  润新知