我已经创建了一个JWT令牌以及过期时间用于身份验证。每次当一个网址在应用程序中命中时,我都会检查令牌。我想增加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
我不知道出了什么问题。任何帮助都将不胜感激。
我认为过期时间是令牌本身的一部分,如果没有新的令牌,就不可能延长令牌的过期时间。
请参阅JWT(JSONWeb Token)自动延长到期时间以了解有关此的更多讨论。
您需要重新创建令牌。令牌中的所有信息都经过签名,根据令牌中的值使令牌唯一。更改您从令牌中提取的声明不会做任何事情。
似乎expTime
在前面的代码行中定义。
例如:-您可以更改此值。
int expTime = 43200000 //after 12 hours(Should in ms)
我认为最好的做法是在属性文件中设置如下。然后您可以在构建项目后更改该时间。
app.expTime=43200000
之后从令牌提供文件调用此值
@Value("${app.expTime}")
private int expTime;