我已经创建了一个JWT令牌以及到期时间以进行身份验证。 每一次 当url命中应用程序时,我正在检查令牌。我想增加JWT令牌到期时间。以下是我的表现。但是令牌通过获取在创建令牌时已经设置的到期时间到期。
//creating JWT token only once when user logged in
String jwtToken = new String(Jwts.builder().setSubject(user.getUserId())
.setExpiration(expTime).setIssuedAt(new Date())
.signWith(SignatureAlgorithm.HS256, "secretkey").compact());
// checking the presence of token every time
Claims claims = Jwts.parser().setSigningKey("secretkey")
.parseClaimsJws(jwtToken).getBody();
claims.setExpiration(time); // trying to reset the expiration time
我不知道出了什么问题。任何帮助将不胜感激。
答案 0 :(得分:2)
您需要重新创建令牌。令牌中的所有信息都已签名,根据令牌中的值使令牌唯一。更改您从令牌中提取的声明并没有做任何事情。
答案 1 :(得分:2)
我认为到期时间是令牌本身的一部分,并且如果没有新令牌,则无法延长令牌的到期时间。
有关此问题的更多讨论,请参阅JWT (JSON Web Token) automatic prolongation of expiration。
答案 2 :(得分:0)
在前面的代码行中似乎定义了expTime
。
例如:-您可以更改此值。
int expTime = 43200000 //after 12 hours(Should in ms)
我认为最佳做法是在属性文件中进行如下设置。然后,您可以在构建项目后更改该时间。
app.expTime=43200000
在此之后,从令牌提供文件中调用该值
@Value("${app.expTime}")
private int expTime;