关于javascript:如何处理JWT.exp时间?

How to handle JWT.exp time?

本问题已经有最佳答案,请猛点这里访问。
1
2
3
4
console.log('DEBUG::+jwtDecode(token).exp', +jwtDecode(token).exp); //1534820211

console.log('DEBUG::try', new Date(+jwtDecode(token).exp).toISOString());
//DEBUG::try 1970-01-18T18:20:20.211Z

我有一个值为1534820211的令牌,当我尝试使用toISOString()转换它时,它给我一年1970-01-18T18:20:20.211Z

但是当我在jwt.io上解码相同的令牌,并且鼠标悬停在exp上时,它显示2018-08-21....,这是巨大的差异。 我还试图将jwtDecode(token).exp传递给moment并使用格式,仍然在1970xxxx中返回我的日期时间。

1
moment(jwtDecode(token).exp).format();

你拥有的价值是纪元的秒数。

JavaScript Date构造函数(以及moment构造函数)也接受来自epoch的值,以毫秒为单位。 将数字乘以1000,您的代码应该可以正常工作:

1
2
var exp = 1534820211 * 1000;
console.log(new Date(exp));