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

时间:2016-07-11 12:14:46

标签: java jwt

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

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

3 个答案:

答案 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;