JWT 相关工具类实现

1,JWT格式组成:

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

         头部:主要描述签名算法

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

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

2,引入相关依赖:

            

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

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;
        }
    }

}

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值