JWT 相关工具类实现

1,JWT格式组成:

          头部,负载,签名     header + payload + signature

         头部:主要描述签名算法

         负载:主要描述加密对象信息,如用户id,昵称,头像等,也可加入规范信息进去,如iss签发者,exp过期时间,sub面向用户,

         签名: 主要是把 头部  负载进行加密 。

2,引入相关依赖:

            

 
        
            io.jsonwebtoken
            jjwt
            0.6.0
        

3,编写JWTUtil工具类:

public class JwtUtil {

    //
    public static final String SUBJECT = "dapanger";

    //过期时长
    public static final long EXPIRE = 1000 * 60 * 60;

    //秘钥
    public static final String APPSECRET = "66666666";


    /**
     * 加密并获取token
     * @param user
     * @return
     */
    public static String geneJsonWebToken(User user) {

        String token = Jwts.builder().setSubject(SUBJECT)
                .claim("id", user.getId())  //token存储信息
                .claim("name", user.getName()) //token存储信息
                .setIssuedAt(new Date())  //创建时间
                .setExpiration(new Date(System.currentTimeMillis() + EXPIRE))  // 过期时间
                .signWith(SignatureAlgorithm.HS256, APPSECRET).compact();
        ;
        return token;
    }

    /**
     * 校验token
     * @param token
     * @return  是否为null 以判断token时候有效
     */
    public static Claims checkJWT(String token) {
        try {
            final Claims claims = Jwts.parser().setSigningKey(APPSECRET).parseClaimsJwt(token).getBody();
            return claims;
        } catch (Exception e) {
            return null;
        }
    }

}

 

 

 

 

 

 

你可能感兴趣的:(工具类相关)