首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JJWT令牌如何设置超时?

JJWT令牌如何设置超时?
EN

Stack Overflow用户
提问于 2016-10-06 17:09:22
回答 1查看 5.1K关注 0票数 7

使用jjwt库,

代码语言:javascript
复制
 String compactJws = Jwts.builder().setSubject("Joe").signWith(SignatureAlgorithm.HS512, key).compact();

但是这个标记是永久性的,我如何设置某种超时呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-06 22:38:19

代码语言:javascript
复制
Date expiration = getExpirationDate(); // implement me

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

根据JWT规范,该日期将转换为从历次开始的秒数(而不是毫秒),并作为exp JWT声明存储。解析器将查看该声明并确保JWT未过期。

请注意,过期检查基于解析时的系统时钟时间。如果生成令牌的机器的时钟相对于解析令牌的机器有一个合理漂移的时钟,则过期检查可能会失败。在这种情况下,您可以使用JJWT的setAllowedClockSkewSeconds方法(在JwtParser/Builder上),以便在时钟之间的差异上有一些回旋余地(1到2分钟就足够了),例如:

代码语言:javascript
复制
Jwts.parser().setAllowedClockSkewSeconds(120)...etc...

如果出于任何原因,这可能不够好,则可以通过以下方法控制实际的解析时钟:

代码语言:javascript
复制
Jwts.parser().setClock(new MyClock())...etc...

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

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39901928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档