【发布时间】:2021-03-12 02:44:37
【问题描述】:
我正在使用 jwtDecode 包来解码 firebase 刷新令牌,所以我得到了一个像这样的对象:
aud: "app name"
auth_time: 1596323784
email: "any email"
email_verified: false
exp: 1596327384
firebase: {identities: {…}, sign_in_provider: "password"}
iat: 1596323784
iss: "https://securetoken.google.com/app name"
user_id: "8mV0nvPuv3ctsZxegS5Sz4uwshP2"
我想始终将到期日期与Date.now() 进行比较,因此当令牌到期时,用户会重定向到 login 页面,但让我感到困惑的是Date.now() 的值大于exp*1000 的值一个新的令牌,
if(decodedToken.exp * 1000 > Date.now()) {
authenticated = true
} else {
authenticated = false;
window.location.href="/login"
}
现在这段代码导致页面每秒重定向到登录页面并且永远不会到达主页,我需要将 > 更改为 这是违反直觉的对我来说。
在令牌过期之前,到期日期值不应大于 Date.now() 的返回值
【问题讨论】:
-
仅供参考:Firebase Auth SDK 根据需要每小时自动刷新用户的令牌。通常,开发人员允许这样做以使用户保持登录状态,只要他们愿意。我很好奇你为什么要尝试做一些不同的事情。
-
@DougStevenson 我不想做一些不同的事情,我希望用户保持登录状态,即使单击导航栏中的登录链接未定向到登录页面,我现在的问题应该不会过期日期在
date.now()之后直到令牌过期。 -
您不必编写任何代码来让用户保持登录状态。正如我所说,只要您不退出,它就会自动发生。
-
@DougStevenson 好吧,你是对的,但为什么会这样呢?新的令牌 exp 是
标签: javascript reactjs firebase firebase-authentication refresh-token