firebase-authentication登录一次并保持登录状态

时间:2018-06-12 13:14:57

标签: firebase firebase-authentication

我正在开展一个非常不重​​要的项目。因此,我希望在身份验证意义上获得最佳用户体验:登录一次并永久登录。

我设法让firebase身份验证正常运行。但是令牌在一小时后到期。

我读到刷新令牌永不过期。 (参见here)因此我想把它放在本地存储中并用它来检索一个新的访问令牌。这是对的吗?

如果是这种情况:为什么没有

this.afAuth.auth.getTokenWithRefreshToken()

我需要使用

吗?
this.afAuth.auth.signInWithCustomToken(MyRefreshTokenFromLocalStorage)

这个功能?

将持久性设置为LOCAL实际上做了什么?在docs中,它表示您将永久登录(即使浏览器已关闭并重新打开),但事实并非如此? “这包括指定登录用户是否应该在显式注销之前无限期保留,在窗口关闭时清除或在页面重新加载时清除的能力。” (firebase docs)

我尝试了很多东西,包括第三方授权提供商,但我不知道它是否无效或者我是否不够聪明。因此,如果有人能给我一个可行的方向,我可以集中精力和错误,我会非常高兴。

2 个答案:

答案 0 :(得分:0)

您需要自己检索刷新令牌。 User.prototype.getIdToken将检查令牌是否过期,如果否,则返回令牌,否则,它使用刷新令牌为您交换新的ID令牌。

对于持久性,这里有一个文档:https://firebase.google.com/docs/auth/web/auth-state-persistence

Local基本上意味着登录状态会持续存在,直到您明确退出,并且状态会持续显示在标签页上。

答案 1 :(得分:0)

firebase.auth.Auth.Persistence.LOCAL

'local'表示即使关闭浏览器窗口或在React Native中破坏了活动,状态仍将保留。需要明确注销才能清除该状态。请注意,Firebase Auth Web会话是单个主机来源的,并且只会在单个域中保留。

 firebase.auth.Auth.Persistence.SESSION 

'session'指示状态将仅在当前会话或选项卡中保持不变,并且在关闭用户经过身份验证的选项卡或窗口时将被清除。仅适用于网络应用。

 firebase.auth.Auth.Persistence.NONE    

“无”表示状态仅存储在内存中,并且在刷新窗口或活动时将清除状态。

相关问题