我的应用程序具有注册管理员用户的基本身份验证表。在登录表单中,需要提供电子邮件和密码,并且可以选择“记住我”。最初,我根据用户的选择将Auth持久性设置为“会话”或“本地”,如docs中所示。
firebase.auth().setPersistence(firebase.auth.Auth.Persistence.SESSION) // or .LOCAL
.then(function() {
firebase.auth().signInWithEmailAndPassword(email, password) ...
我有一个退出按钮,呼叫firebase.auth().signOut()
。似乎已经注销了用户,并重定向到登录屏幕,但是如果重新加载页面,则用户将再次登录,而无需通过SignIn表单。
我考虑过将setPersistence(firebase.auth.Auth.Persistence.NONE)
添加到注销逻辑,但是(至少在文档中)它需要用户凭证signInWithEmailAndPassword
。问题在于,如果该帐户以前一直保留并登录,则用户没有离开email
和password
。好吧,至少是密码。
我的方法根本上是错误的,还是我需要以其他方式清除本地存储?还是可以将persisterUser设置为“ none”而无需再次调用signInWithEmailAndPassword
?
答案 0 :(得分:1)
根据“记住我”复选框设置持久性
// Checked
await firebase.auth().setPersistence(firebase.auth.Auth.Persistence.LOCAL)
// Unchecked
await firebase.auth().setPersistence(firebase.auth.Auth.Persistence.SESSION)
之后,您可以使用凭据登录用户,而不必担心将任何内容存储在浏览器的本地/会话存储中以及调用
await firebase.auth().signOut()
用户将被注销