使用jjwt库,
String compactJws = Jwts.builder().setSubject("Joe").signWith(SignatureAlgorithm.HS512, key).compact();但是这个标记是永久性的,我如何设置某种超时呢?
发布于 2016-10-06 22:38:19
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分钟就足够了),例如:
Jwts.parser().setAllowedClockSkewSeconds(120)...etc...如果出于任何原因,这可能不够好,则可以通过以下方法控制实际的解析时钟:
Jwts.parser().setClock(new MyClock())...etc...然而,在大多数情况下,设置Clock并不是必要的(通常它在测试用例中最有用)。
https://stackoverflow.com/questions/39901928
复制相似问题