• 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"));
        }
    }

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

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

  • 相关阅读:
    美化盒子和文本字体
    图片和多媒体
    学习node1_module对象
    学习vue5_组件
    学习vue4_input
    学习vue3
    学习vue2
    Ubuntu中U盘识别不了
    docker 建立新用户软件安装环境ubuntu
    计算机性能优化笔记
  • 原文地址:https://www.cnblogs.com/changhai/p/8423220.html
Copyright © 2020-2023  润新知