【问题标题】:How can I reset the JWT token expiration time?如何重置 JWT 令牌过期时间?
【发布时间】:2016-11-13 09:14:26
【问题描述】:

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

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

【问题讨论】:

    标签: java jwt


    【解决方案1】:

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

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

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

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

    app.expTime=43200000
    

    然后从令牌提供文件中调用这个值

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

    【讨论】:

      【解决方案2】:

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

      有关此问题的更多讨论,请参阅JWT (JSON Web Token) automatic prolongation of expiration

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2020-11-08
          • 2020-08-18
          • 2016-08-08
          • 2020-08-17
          • 2019-04-18
          • 2021-07-16
          • 2019-08-04
          • 2023-04-04
          • 1970-01-01
          相关资源
          最近更新 更多