zoukankan      html  css  js  c++  java
  • 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;
            }
        }
    }
  • 相关阅读:
    git commit 合并
    git 管理 Linux 文件系统
    python 全局变量的使用
    JavaScript 中 类型转换
    canconfig 配置命令
    python 调用 shell 命令
    python 3 操作mysql数据库的方法
    python 字符串和整数,浮点型互相转换
    JavaScript 里面的整数 位 操作
    JavaScript 使用 php 的变量
  • 原文地址:https://www.cnblogs.com/ljl-blog/p/11164991.html
Copyright © 2011-2022 走看看