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;
            }
        }
    }
  • 相关阅读:
    js实现快速排序
    vue+Elementui表单验证基本使用
    angular 报错 Cannot assign to a reference or variable!
    nz-table复选功能改造(整行可选)
    angular在父组件设置子组件样式
    angular6路由参数的传递与获取
    上下滚动,头部固定,左右滚动,左侧边栏固定布局
    TimePicker
    angular配置懒加载路由的思路
    angular实现draggable拖拽
  • 原文地址:https://www.cnblogs.com/ljl-blog/p/11164991.html
Copyright © 2011-2022 走看看