【发布时间】:2019-03-27 07:35:32
【问题描述】:
早安,
我在身份验证中使用 jwt。我已经解码了我的令牌,但问题是,我想检查令牌 exp 是否已经过期。
var decodedToken = localStorage.getItem('user_token');
console.log(decodedToken.exp) // writes 1540360205
提前谢谢你。
【问题讨论】:
标签: javascript date jwt
早安,
我在身份验证中使用 jwt。我已经解码了我的令牌,但问题是,我想检查令牌 exp 是否已经过期。
var decodedToken = localStorage.getItem('user_token');
console.log(decodedToken.exp) // writes 1540360205
提前谢谢你。
【问题讨论】:
标签: javascript date jwt
您的 JWT 令牌的 exp 声明似乎带有 UNIX 时间戳,以秒为单位。要检查给定的 JWT 是否已过期,您只需将当前日期作为 UNIX 时间戳进行比较:
var decodedToken = localStorage.getItem('user_token');
if (decodedToken.exp < new Date()/1000) {
console.log("EXPIRED");
}
【讨论】:
exp 中的过期时间戳。然后,客户端可以根据需要进行调整,以确定何时应该使用刷新令牌来请求新的访问和刷新令牌。
这应该会为您提供当地时间,然后您可以将其与当前日期和时间进行比较,并检查令牌是否已过期
var tokenDate = new Date(parseInt(localstorage.getItem('user_token')) * 1000)
【讨论】:
我假设 decodedToken.exp 的值是令牌到期日期的 UNIX 时间戳,因此您可以执行以下操作:
...
var date = new Date();
// date.getTime() is in milliseconds and thus we've got to divide by 1000
if(decodedToken.exp<date.getTime()/1000){
console.log('The token has expired');
}else{
console.log('The token is still valid');
}
【讨论】:
您可以使用Date.now() 进行如下比较
decodedToken.exp * 1000 < Date.now()
PS:我将 exp * 1000 乘以毫秒。
【讨论】: