zoukankan      html  css  js  c++  java
  • java WT -- JSON WEB TOKEN 加密/校验工具类

    依赖项

            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt</artifactId>
                <version>0.7.0</version>
            </dependency>

    JWTUtils.java

    package net.ybclass.online_ybclass.utils;
    
    import io.jsonwebtoken.Claims;
    import io.jsonwebtoken.Jwts;
    import io.jsonwebtoken.SignatureAlgorithm;
    import net.ybclass.online_ybclass.domain.User;
    
    import java.util.Date;
    
    /**
     * JWT工具类
     * 注意点:
     * 1、生成的token,是可以通过base64进行解密出铭文信息
     * 2、base64进行解密出明文信息,修改再进行编码,则会解密失败
     * 3、无法作废已颁布的token,除非改密钥
     */
    public class JWTUtils {
        /**
         * 过期时间,一周
         */
        static final long EXPIRE = 60000 * 60 * 24 * 7;
        /**
         * 加密密钥
         */
        private static final String SECRET = "ybclass.net168";
        /**
         * 令牌前缀
         */
        private static final String TOKEN_PREFIX = "ybclass";
        /**
         * 主题
         */
        private static final String SUBJECT = "ybclass";
    
        /**
         * 根据用户信息,生成令牌
         *
         * @param user
         * @return
         */
        public static String geneJsonWebToken(User user) {
            String token = Jwts.builder().setSubject(SUBJECT)
                    .claim("head_img", user.getHeadImg())
                    .claim("id", user.getId())
                    .claim("name", user.getName())
                    .setIssuedAt(new Date()) //令牌颁布时间
                    .setExpiration(new Date(System.currentTimeMillis() + EXPIRE)) //过期时间
                    .signWith(SignatureAlgorithm.HS256, SECRET) //加密方式
                    .compact();
            token = TOKEN_PREFIX + token;
            return token;
        }
    
        /**
         * 校验token方法
         *
         * @param token
         * @return
         */
        public static Claims checkJWT(String token) {
            try {
                final Claims claims = Jwts.parser()
                        .setSigningKey(SECRET)
                        .parseClaimsJws(token.replace(TOKEN_PREFIX, ""))
                        .getBody();
                return claims;
            } catch (Exception e) {
                return null;
            }
        }
    }
  • 相关阅读:
    HDU 4666 Hyperspace【最远曼哈顿距离+优先队列】
    Set集合容器
    堆排序实现
    手机网站调试神器之chrome控制台
    CC Sereja and Ballons (主席树)
    Multiset多重集合容器
    ZOJ 3626 Treasure Hunt I
    hdu 2072
    poj 3498 (最大流,枚举汇点)
    排序算法--冒泡排序
  • 原文地址:https://www.cnblogs.com/chenyanbin/p/13324413.html
Copyright © 2011-2022 走看看