【发布时间】:2020-07-13 17:58:05
【问题描述】:
我想测试我的令牌的有效时间,当我编写代码并重新启动服务器时,密钥更改。出于这个原因,我的测试总是失败。我该如何解决?
这是我的 isExpired 及其辅助方法:
final Key key = Keys.secretKeyFor(SignatureAlgorithm.HS256); //This key always
// change if i restart server
.
.
.
public boolean isExpired(String token) {
Claims claims = getClaims(token);
return claims.getExpiration().after(new Date(System.currentTimeMillis()));
}
private Claims getClaims(String token) {
return Jwts.parser().setSigningKey(key).parseClaimsJws(token).getBody();
}
【问题讨论】:
-
与问题无关,但看起来 isExpired 方法中可能存在错误。如果声明的过期时间在当前时间之后,则该方法将返回
true。如果声明的过期时间是在当前时间之前,正确的行为可能是返回true。 -
我没有意识到。当使用 isExpired 时,我基本上使用它的反向形式,因为这个原因我的代码工作正常,但为了可读性我应该修复它。谢谢。@dnault
标签: java spring unit-testing testing junit