【发布时间】:2018-05-10 03:54:20
【问题描述】:
我将 Firebase 身份验证添加到我的 Reactjs(和 Redux)网络应用程序中,一切正常。我正在使用电子邮件/密码登录,并调用 firebase.auth().signInWithEmailAndPassword ,它在重新加载、选项卡更改等时仍然存在。但是,大约一个小时后,auth 会话似乎过期并且 currentUser 设置为 null。感觉 Firebase 控制台的某处应该有一个设置,但是在搜索之后,我什么也找不到。
任何帮助将不胜感激!
【问题讨论】:
-
是用户会话即将到期还是令牌? ID 令牌在一小时后过期(无法更改),但会在后台自动刷新。用户会话不会在一小时后过期。见stackoverflow.com/questions/37487283/…。
-
我认为无论出于何种原因,令牌都不会自动刷新。该链接建议调用 firebase.auth().currentUser.getToken 手动刷新,但我不能这样做,因为 currentUser 在一小时后为空。我想我可以设置一个 55 分钟的计时器并以这种方式刷新它,但这似乎真的很骇人听闻......关于它为什么不刷新的任何想法?
-
用户不应在 ID 令牌到期时注销。这里还有其他事情发生。如果有大的帐户更改(用户删除、密码更改、电子邮件更改、密码重置等),用户将被注销。您是否使用
firebase.auth().onAuthStateChanged侦听器来确定用户的初始状态? -
我昨晚用控制台日志设置了
firebase.auth().onAuthStateChanged,但这并没有太大帮助。登录后,它会立即记录看似正常的登录状态,其中包含电子邮件、refreshToken、uid 等。刷新页面会记录相同的内容,但是一小时后,日志只返回“null”。在那之后,刷新仍然返回 null 并且取回用户数据的唯一方法是注销并重新登录。 -
Firebase 令牌默认设置为最长 1 小时。
标签: reactjs firebase redux firebase-authentication