Firebase RememberMe功能

时间:2017-01-16 06:54:37

标签: javascript firebase firebase-authentication

我的webapp允许不同的用户使用不同的凭据登录同一台计算机上的不同标签/浏览器(使用signInWithEmailAndPassword)。我通过为每次登录调用firebase.initializeApp(config, 'appName'+new Date().getTime())来实现此目的

当用户关闭标签页面或重新加载(在window.onbeforeunload中)时,我会调用.auth().signOut()将其注销。

我现在想在我的应用页面添加 RemeberMe 功能,这是一个勾选框,如果(仅当)勾选,将允许来自同一台机器和用户名的后续登录而不提供密码即使机器例如在此期间重新启动。

如何实现?

我正在考虑的是(当记得我的时候)在存储在cookie中的客户端上生成一个令牌并在db上维护一个将令牌链接到密码的表,这有两个问题,首先密码保存在db上,这是坏的,第二个密码需要发送回客户端,这也是坏的。

有更好的选择吗?

2 个答案:

答案 0 :(得分:3)

从Firebase JS 4.2.0开始,您现在可以指定会话持久性。您可以通过以下方式登录多个标签中的不同用户: firebase.auth().setPersistence(firebase.auth.Auth.Persistence.SESSION)

当窗口关闭时,会话被清除。

有关详情,请查看https://firebase.google.com/support/release-notes/js#4.2.0https://firebase.google.com/docs/auth/web/auth-state-persistence

答案 1 :(得分:1)

只需在登录表单中添加一个带有参考变量的rememberMe复选框(例如remember),然后像这样使用firebase setPersistence

firebase.auth().setPersistence(this.remember.checked ? fireauth.Auth.Persistence.LOCAL : fireauth.Auth.Persistence.SESSION)

(这里我使用的是JavaScript示例)