如何检查 twilio 令牌是否过期
How to check if a twilio token is expired
我有一个 nextjs 项目,我需要验证一个 twilio 令牌是否过期。
我考虑过使用库 jwt-decode
来解码令牌并从中获取 exp 属性,然后将其与实际日期进行比较。问题是 exp 日期似乎被打破了,因为它总是在 1970 年。
例如我刚刚创建了这个令牌:
{
"jti": "SKbec4a565d0598f1e4130f65db51a8345-xxxxxxxxxx",
"grants": {
"identity": "618f7ef057c2923be10dfd1d",
"chat": {
"service_sid": "ISbffc1a6c2f8647ac8a6774xxxxxxxxxx"
}
},
"iat": 1649879042,
"exp": 1649882642,
"iss": "SKbec4a565d0598f1e4130f6xxxxxxxxxx",
"sub": "AC1d09a2edee3f481fbd1dafxxxxxxxxxx"
}
如果我 new Date(1649882642)
结果是 1970-01-20T02:18:02.642Z
。总是。
也许我应该在创建令牌时指定令牌到期时间?我在 official doc 之后创建了它。那么我应该怎么做才能确定令牌是否有效?
Twilio JWT 中的 iat
和 exp
值是自纪元(1970 年 1 月 1 日)以来的秒数。
然而,Dates in JavaScript are measured in milliseconds since the the epoch.
因此,要将以秒为单位的时间调整为 JavaScript 中的日期,您应该先乘以 1,000。
const exp = decodedToken.exp;
const expiryDate = new Date(exp * 1000);
在您的示例中,它看起来像:
const exp = 1649882642;
const expiryDate = new Date(exp * 1000);
expiryDate.toISOString();
// => 2022-04-13T20:44:02.000Z
我有一个 nextjs 项目,我需要验证一个 twilio 令牌是否过期。
我考虑过使用库 jwt-decode
来解码令牌并从中获取 exp 属性,然后将其与实际日期进行比较。问题是 exp 日期似乎被打破了,因为它总是在 1970 年。
例如我刚刚创建了这个令牌:
{
"jti": "SKbec4a565d0598f1e4130f65db51a8345-xxxxxxxxxx",
"grants": {
"identity": "618f7ef057c2923be10dfd1d",
"chat": {
"service_sid": "ISbffc1a6c2f8647ac8a6774xxxxxxxxxx"
}
},
"iat": 1649879042,
"exp": 1649882642,
"iss": "SKbec4a565d0598f1e4130f6xxxxxxxxxx",
"sub": "AC1d09a2edee3f481fbd1dafxxxxxxxxxx"
}
如果我 new Date(1649882642)
结果是 1970-01-20T02:18:02.642Z
。总是。
也许我应该在创建令牌时指定令牌到期时间?我在 official doc 之后创建了它。那么我应该怎么做才能确定令牌是否有效?
Twilio JWT 中的 iat
和 exp
值是自纪元(1970 年 1 月 1 日)以来的秒数。
然而,Dates in JavaScript are measured in milliseconds since the the epoch.
因此,要将以秒为单位的时间调整为 JavaScript 中的日期,您应该先乘以 1,000。
const exp = decodedToken.exp;
const expiryDate = new Date(exp * 1000);
在您的示例中,它看起来像:
const exp = 1649882642;
const expiryDate = new Date(exp * 1000);
expiryDate.toISOString();
// => 2022-04-13T20:44:02.000Z