gpt4 book ai didi

java - JJWT 代币。如何设置超时?

转载 作者:搜寻专家 更新时间:2023-11-01 02:03:44 24 4
gpt4 key购买 nike

使用jjwt库,

 String compactJws = Jwts.builder().setSubject("Joe").signWith(SignatureAlgorithm.HS512, key).compact();

但是这个 token 是永久性的,我该如何设置某种超时?

最佳答案

Date expiration = getExpirationDate(); // implement me

Jwts.builder().setSubject("Joe")
.setExpiration(expiration)
.signWith(SignatureAlgorithm.HS512, key)
.compact();

根据 JWT 规范,日期将转换为自纪元以来的(而非毫秒)数,并存储为 exp JWT 声明。解析器将查看该声明并确保 JWT 未过期。

请注意,过期检查基于解析时的系统时钟时间。如果生成 token 的机器的时钟与解析 token 的机器相比漂移合理,您的到期检查可能会失败。在这种情况下,您可以使用 JJWT 的 setAllowedClockSkewSeconds 方法(在 JwtParser/Builder 上)为时钟之间的差异留出一些回旋余地(1 到 2 分钟应该绰绰有余),例如:

Jwts.parser().setAllowedClockSkewSeconds(120)...etc...

如果出于某种原因可能不够好,您可以通过以下方式控制实际的解析时钟:

Jwts.parser().setClock(new MyClock())...etc...

然而,在大多数情况下,设置Clock 不是必需的(它通常在测试用例中最有用)。

关于java - JJWT 代币。如何设置超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39901928/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com