提问者:小点点

如何重置JWT令牌过期时间?


我已经创建了一个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

我不知道出了什么问题。任何帮助都将不胜感激。


共3个答案

匿名用户

我认为过期时间是令牌本身的一部分,如果没有新的令牌,就不可能延长令牌的过期时间。

请参阅JWT(JSONWeb Token)自动延长到期时间以了解有关此的更多讨论。

匿名用户

您需要重新创建令牌。令牌中的所有信息都经过签名,根据令牌中的值使令牌唯一。更改您从令牌中提取的声明不会做任何事情。

匿名用户

似乎expTime在前面的代码行中定义。

例如:-您可以更改此值。

int expTime = 43200000 //after 12 hours(Should in ms)

我认为最好的做法是在属性文件中设置如下。然后您可以在构建项目后更改该时间。

app.expTime=43200000

之后从令牌提供文件调用此值

@Value("${app.expTime}")
private int expTime;