【发布时间】:2018-09-04 15:22:42
【问题描述】:
更新:由于代码重构,测试需求已经消失,正如 Ron 在接受的答案中指出的那样,onAuthStateChange() 最终会触发,应用程序可以依赖它.我最初并没有看到这一点,这正是我提出问题的原因。
原始问题:我一直在使用window.localStorage 并搜索以'firebase:authUser' 开头的密钥,以此来确定我的应用程序是否可以在不久的将来发生firebase 身份验证事件。不管成功还是失败,都会触发firebase.auth().onAuthStateChanged(),我可以在那里处理结果。想知道的原因是,如果我有一些正在处理的本地凭据,我的应用程序可以显示“请稍候...”类型的消息。但如果没有,它可以立即重定向到登录页面。由于 firebase 移至 indexedDB,此代码不再有效,而且我找不到任何等效的 hack 来查找本地持久的凭据(也许现在不可能?)。
我也很乐意切换到SESSIONpersistence,而不是LOCAL,但我不确定这是否会改变场景——我仍然需要一种方法来测试是否有任何事情发生如果没有要验证的本地凭据,以避免用户永远停留在“请稍候...”消息。
还是我做错了?我知道我可以显示登录页面 直到 firebase.auth().onAuthStateChanged() 触发,但是到那时用户可能已经点击了,如果他们已经登录然后刷新页面,体验也不是那么好,他们在哪里看到登录页面再次,直到所有内容都加载完毕。
我在auth() API 中找不到任何东西来判断它是否正在处理本地持久化的凭据,到目前为止,window.localStorage hack 一直运行良好。现在管理用户体验的最佳方式是什么?
【问题讨论】:
-
也在 Github 上发布:github.com/firebase/firebase-js-sdk/issues/595。交叉发布时请注明,以便其他人同时查看这两个链接。
-
为什么要关闭它呢?我很高兴发帖,但有些人可能更喜欢一个频道而不是另一个频道,如果在任何一个地方都能找到解决方案,我会随时更新。不过,请参阅下面的评论。这仍然不是有效的 FR 吗?
-
我并没有说它应该关闭,只是表明当你交叉发布时表明它被认为是适当的礼仪,以减少完成双重工作的机会。但鉴于我们的一位工程师在这里回答,他们关闭 Github 问题以确保讨论停留在一个地方是有道理的。
标签: firebase firebase-authentication