Jwt生成token & 解析token 详解

 1.生成token

public String createTokenByBao(String userId){
Date date = new Date();
String token = Jwts.builder() // 创建一个JWT构建器,用于创建和配置JWT。
.setSubject(userId) // 主题--生成token所需内容设置
.setIssuedAt(date) // 签发时间
.setExpiration(new Date(System.currentTimeMillis() + expireTime * 60 * 1000)) // 过期时间设置:这里的expireTime表示的是分钟数,要换算成毫秒数进行计算
.signWith(SignatureAlgorithm.HS256, secret) // 签名--保密设置
.compact(); // 生成最终的JWT字符串。
return token;
}

 2.解析token

try {
Claims claims = Jwts.parser() // 创建一个 JWT 解析器的实例
.setSigningKey(LOGIN_TOKEN_SECRET) // 使用相同的签名密钥
.parseClaimsJws(token) // 方法将传入的 token 进行解析
.getBody(); // 从jws对象中获取声明信息,返回一个claims对象

// 提取openid或其他用户ID字段
return new Integer(claims.getSubject());
} catch (JwtException e) {
// JWT验证异常,令牌无效
return null; // 可以根据实际需求返回特定的错误标识或抛出自定义异常
}

 

posted @ 2023-11-06 18:44  xiaobaibao  阅读(1213)  评论(0编辑  收藏  举报