java - 生成和验证相同令牌时的签名异常
问题描述
我编写了一个 jwt 创建者,当我创建令牌时没有问题。但是当我从标题中收到它并检查它时,发生签名异常下面的代码有什么问题?
@Service
public class TokenManager {
private static final int validity = 5 * 60 * 1000;
Key key = Keys.secretKeyFor(SignatureAlgorithm.HS256);
public String generateToken(String afId) {
return Jwts.builder()
.setSubject(afId)
.setIssuer("www.asn.com")
.setIssuedAt(new Date(System.currentTimeMillis()))
.setExpiration(new Date(System.currentTimeMillis() + validity))
.signWith(key)
.compact();
}
public boolean tokenValidate(String token) {
return getUsernameToken(token) != null && !isExpired(token);
}
public String getUsernameToken(String token) {
Claims claims = getClaims(token);
return claims.getSubject();
}
public boolean isExpired(String token) {
Claims claims = getClaims(token);
return claims.getExpiration().before(new Date(System.currentTimeMillis()));
}
private Claims getClaims(String token) {
return Jwts.parser().setSigningKey(key).parseClaimsJws(token).getBody(); // SIGNATURE EXCEPTİON occurs
}
}
解决方案
private static final Key key = Keys.secretKeyFor(SignatureAlgorithm.HS256);
这很好用。
推荐阅读
- traefik - Traefik - HTTPS 证书更新延迟
- javascript - 如何在没有表单的情况下将文件上传到 s3 存储桶?
- git - 本地和删除分支在 master 上 rebase 和 push -f 后发生了分歧
- typo3 - realurl 中的其他语言失败
- c# - 一个目标的多个图像
- visual-studio - 如何让Unity打开Visual Studio 2017编辑代码
- javascript - 沿 x 轴缩放
- mysql - Node JS 单元测试用例 mysql
- css - 不能在不丢失徽标高度的情况下居中标题和菜单
- java - 如何使用数据快照从新孩子那里获取所有孩子的值?