【发布时间】:2018-04-13 21:28:44
【问题描述】:
当用户从节点服务器登录时,我正在签署 JWT,使用 express 发送到 Angular 客户端。
我遇到的问题是在检查过期时间是否超过当前时间时,总是错误
服务器端:
var jwt = require('jsonwebtoken');
const token = jwt.sign({
'name': admin.name
}, RSA_PRIVATE_KEY, {
algorithm: 'RS256',
expiresIn: 7200,
subject: adminId
});
客户端:
private setSession(authResult) {
const decoded = jwt_decode(authResult.token)
const exp = decoded.exp;
this.username = decoded.name;
this.adminId = decoded.sub;
console.log(exp)// returns 1509551526
localStorage.setItem('id_token', authResult.token);
localStorage.setItem("expires_at", exp);
}
当令牌被解码时,exp 声明返回 1509551526(当时)
我使用下面的函数比较它们:
public isLoggedIn() {
var current_time = new Date().getTime() / 1000;
console.log(current_time)
if (current_time > this.getExpiration()) {
console.log("Expired!")
}
}
current_time 返回 1509544328.137(当时)所以:
if (1509544328.137 > 1509551526)
或者
if (2017-11-01 13:52:08 > 2017-11-01 15:52:06)
我已经记录了两个变量的 typeof,它们都是数字
【问题讨论】: