何时设置Firebase身份验证状态持久性

时间:2018-05-21 23:30:25

标签: firebase firebase-authentication

根据指南,在调用实际登录方法之前设置firebase auth state persistance:

firebase.auth().setPersistence(firebase.auth.Auth.Persistence.SESSION)
  .then(function() {
    // Existing and future Auth states are now persisted in the current
    // session only. Closing the window would clear any existing state even
    // if a user forgets to sign out.
    // ...
    // New sign-in will be persisted with session persistence.
    return firebase.auth().signInWithEmailAndPassword(email, password);
  })
  .catch(function(error) {
    // Handle Errors here.
    var errorCode = error.code;
    var errorMessage = error.message;
  });

请参阅https://firebase.google.com/docs/auth/web/auth-state-persistence

然而,不应该是相反的方式吗?难道我不能首先确保登录成功,然后尝试设置持久性吗?

在建议的方法中,用户可能有10次错误的登录尝试,并且每次他都会请求firebase设置持久性,即使登录不成功。

例如,注册会是一样的。是否有一种实际方法可以将firebase auth持久性设置为SESSION或NONE默认值?

1 个答案:

答案 0 :(得分:0)

在我的项目中,我在onAuthStateChanged侦听器中设置/重置了它。类似于以下内容:

firebase.auth.onAuthStateChanged(authUser => {
  authUser
    ? localStorage.setItem('authUser', JSON.stringify(authUser))
    : localStorage.removeItem('authUser')
});

您可以在here上详细了解它。