为了账号安全,请及时绑定邮箱和手机立即绑定

通过比较 longs 检查 JWT exp 字段

通过比较 longs 检查 JWT exp 字段

慕斯王 2023-06-04 17:53:35
我想检查我的 JWT 令牌是否仍然有效(exp 仍然在未来)但我不确定我是否以正确的方式做到了。我的检查功能 -public boolean checkForValidExpField(String jwtToken) throws JsonProcessingException, IOException {    //split by .    String[] split_string = jwtToken.split("\\.");    //get body    String base64EncodedBody = split_string[1];    Base64 base64Url = new Base64(true);    String body = new String(base64Url.decode(base64EncodedBody));    //body to json    ObjectMapper mapper = new ObjectMapper();    JsonNode actualObj = mapper.readTree(body);    //get exp     String exp = actualObj.get(JWT_EXP_KEY).asText(); //JWT_EXP_KEY = exp    //to long    long expLong = Long.parseLong(exp) * 1000;    //get current TS    long currentTime = System.currentTimeMillis();    //check    return expLong >= currentTime; }这是只检查 exp 字段的正确方法吗?我自己写的,所以我只是想确定一下。
查看完整描述

1 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

声明exp(以及其他与时间相关的声明,如nbf)是数字日期:

JWT文档(RFC)定义了数字日期:

一个 JSON 数值,表示从 1970-01-01T00:00:00Z UTC 到指定的 UTC 日期/时间的秒数,忽略闰秒。

因此,您确实可以比较代码中显示的 long 值,或者从 exp 值中减去当前时间以获得剩余时间。


查看完整回答
反对 回复 2023-06-04
  • 1 回答
  • 0 关注
  • 92 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信