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;
            }
        }
    }
  • 相关阅读:
    STM32 端口复用配置
    stm32 新建文件记得添加到工程
    keil解决SYSTEMsysstm32f10x.h(298): error: #67: expected a "}"
    解决Keil复制中文乱码
    STM32 MPU6050 源码
    STM32 PWM输出
    STM32定时器
    STM32 看门狗操作姿势
    开课博客
    第二周学习进度
  • 原文地址:https://www.cnblogs.com/chenyanbin/p/13324413.html
Copyright © 2011-2022 走看看