登录校验JWT封装方法

加入相关依赖

<!-- JWT相关 -->
 <dependency>
	 <groupId>io.jsonwebtoken</groupId>
	 <artifactId>jjwt</artifactId>
	 <version>0.7.0</version>
 </dependency>

封装⽣产token方法

/**
 * 根据⽤户信息,⽣成令牌
 * @param user
 * @return
 */
 /**
     *  过期时间 一周
     */
    private static final long EXPIRE = 60000 * 60 * 24 * 7;
    /**
     * 加密密钥
     */
    private static final String SECRET = "CSDNBLOG";
    /**
     * 令牌前缀
     */
    private static final String TOKEN_PREFIX = "CSDNBLOG";

    /**
     * subject
     */
    private static final String SUBJECT = "CSDNBLOG";

    /**
     * 根据用户信息,生成令牌
     * @param user
     * @return
     */
    public static String geneJsonWebToken(User user){

        String token = Jwts.builder().setSubject(SUBJECT) // 主题
                .claim("img", user.getImg())
                .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方法

/**
     * 效验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;
        }
    }

测试方法

public static void main(String[] args)  {
        User user = new User();
        user.setId(1L);
        user.setName("CSDN博客");
        user.setAge("24");
        String token = JWTUtils.geneJsonWebToken(user);
        System.out.println(token);
        Claims claims = JWTUtils.checkJWT(token);
        System.out.println(claims);
        System.out.println(claims.get("name"));
    }

返回值:

CSDNBLOGeyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJDU0ROQkxPR1NVQiIsImFnZSI6IjI0IiwiaWQiOjEsIm5hbWUiOiJDU0RO5Y2a5a6iIiwiaWF0IjoxNjA1MzQxNTUzLCJleHAiOjE2MDU5NDYzNTN9.AinXnOfPTvDTE79rIzUBouPHhdtGQJCf6WWW2MsdrN8
{sub=CSDNBLOGSUB, age=24, id=1, name=CSDN博客, iat=1605341553, exp=1605946353}
CSDN博客
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值