我想检查我的 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 值中减去当前时间以获得剩余时间。
添加回答
举报
0/150
提交
取消