zoukankan      html  css  js  c++  java
  • jwt 工具类

    public class TokenUtils {
        private Logger logger = LoggerFactory.getLogger(this.getClass());
        /**
         * 签名秘钥
         */
        public static final String SECRET = "token";
    
        /**
         * 生成token
         * @param id 一般传入userName
         * @return
         */
        public static String createJwtToken(String id){
            String issuer = "";
            String subject = "";
            long ttlMillis = 30*60*1000; 
            return createJwtToken(id, issuer, subject, ttlMillis);
        }
    
        /**
         * 生成Token
         * 
         * @param id
         *            编号
         * @param issuer
         *            该JWT的签发者,是否使用是可选的
         * @param subject
         *            该JWT所面向的用户,是否使用是可选的;
         * @param ttlMillis
         *            签发时间
         * @return token String
         */
        public static String createJwtToken(String id, String issuer, String subject, long ttlMillis) {
    
            // 签名算法 ,将对token进行签名
            SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
    
            // 生成签发时间
            long nowMillis = System.currentTimeMillis();
            Date now = new Date(nowMillis);
    
            // 通过秘钥签名JWT
            byte[] apiKeySecretBytes = DatatypeConverter.parseBase64Binary(SECRET);
            Key signingKey = new SecretKeySpec(apiKeySecretBytes, signatureAlgorithm.getJcaName());
    
            // Let's set the JWT Claims
            JwtBuilder builder = Jwts.builder().setId(id)
                .setIssuedAt(now)
                .setSubject(subject)
                .setIssuer(issuer)
                .signWith(signatureAlgorithm, signingKey);
            
            // if it has been specified, let's add the expiration
            if (ttlMillis >= 0) {
                long expMillis = nowMillis + ttlMillis;
                Date exp = new Date(expMillis);
                builder.setExpiration(exp);
            }
    
            // Builds the JWT and serializes it to a compact, URL-safe string
            return builder.compact();
    
        }
    
        // Sample method to validate and read the JWT
        public static Claims parseJWT(String jwt) {
            // This line will throw an exception if it is not a signed JWS (as expected)
            Claims claims = Jwts.parser()
                .setSigningKey(DatatypeConverter.parseBase64Binary(SECRET))
                .parseClaimsJws(jwt).getBody();
            return claims;
        }
    
        public static void main(String[] args) {
            System.out.println(TokenUtils.createJwtToken("admin"));
            System.out.println(TokenUtils.parseJWT("eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJhZG1pbiIsImlhdCI6MTUxNzg4NDU0OCwic3ViIjoiIiwiaXNzIjoiIiwiZXhwIjoxNTE3ODg2MzQ4fQ.AxGGAOiwOmnp5oKaSdlmny-zgZigsqgZY8fG_UxVLKs"));
        }
    }

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数

  • 相关阅读:
    戒烟与苦乐原则
    计算机视觉(二)-opencv之createTrackbar()详解
    计算机视觉(一)-openCV的安装及使用
    友谊之光
    深度学习-神经网络
    理解与学习深度卷积生成对抗网络
    修改路由器用的校园网账号
    参加Folding@Home(FAH)项目,为战胜新冠肺炎贡献出自己的一份力量
    更改路由器为老版本固件的教程
    逻辑回归(Logistic Regression)详解,公式推导及代码实现
  • 原文地址:https://www.cnblogs.com/changhai/p/8423220.html
Copyright © 2011-2022 走看看