作者:pingyuki | 来源:互联网 | 2024-12-14 13:32
为了在Java项目中实现安全的身份验证,JWT (JSON Web Tokens) 是一种广泛采用的标准。以下是如何使用 io.jsonwebtoken
库生成和验证JWT Token的具体步骤。
首先,在项目的pom.xml
文件中添加如下依赖:
io.jsonwebtoken
jjwt
0.9.1
接下来是生成Token的代码示例:
Map claims = new HashMap();
claims.put("id", user.getId());
// 创建JWT Token
String jwtToken = Jwts.builder()
.setClaims(claims) // 设置payload,用于存储用户信息等非敏感数据
.signWith(SignatureAlgorithm.HS256, secret) // 使用HS256算法与secret密钥签名
.setExpiration(new Date(System.currentTimeMillis() + 12 * 60 * 60 * 1000)) // 设置过期时间为12小时后
.compact();
解析并验证Token的代码示例如下:
try {
if (StringUtils.isEmpty(token)) {
return null;
}
// 解析Token中的信息
Map body = Jwts.parser()
.setSigningKey(secret)
.parseClaimsJws(token)
.getBody();
// 构建User对象
User user = User.builder()
.id(Long.valueOf(body.get("id").toString()))
.build();
} catch (ExpiredJwtException e) {
log.info("Token已过期: " + token, e);
} catch (Exception e) {
log.error("非法Token: " + token, e);
}
