繁体   English   中英

Firebase 身份验证 - 登录用户是 Null

[英]Firebase Authentication - Logged In User Is Null

我已经设法使用 Firebase 设置了一个自定义登录系统。 用户输入电子邮件/密码并被重定向到主页(这是私有的)。 登录后我遇到 onAuthStateChanged 问题。当我登录主页后检查身份验证 state 时,我得到无效用户(null)。 firebase 仪表板显示我已成功登录,但 onAuthStateChanged 却相反。

我正在尝试检查用户是否登录到我的 html 页面,如果没有,我想将它们重定向到登录页面。 我喜欢 firebase 中身份验证的工作方式,但我需要保护我的 html 页面而不是我的 div(这是绝大多数 firebase auth 教程所展示的)

如果有人有更简单的方法来密码保护看起来比 HTaccess 更好的 web 目录,请告知(我不喜欢使用 wordpress 进行密码保护,但它是一个选项)。 否则,我想我将不得不在 PHP 中执行此操作。 提前致谢!

(function () {
   firebase.auth().onAuthStateChanged(function(user) {
      if (user) {
        // User is signed in.
         console.log(user);
         console.log('A user is logged in.');
      } else {
        // No user is signed in.
        console.log('Invalid user. Redirecting to root.');
        window.location.replace('../index.html');
      }
   });
})();

如果导航到新页面,Firebase 将不得不再次初始化。 作为其中的一部分,它将尝试恢复用户的身份验证 state,但这需要调用服务器,这需要时间。

出于这个原因, onAuthStateChanged侦听器最初将使用null作为当前用户触发(并且auth.currentUser设置为null )。 然后,一旦用户登录,侦听器将再次触发该用户的user object。

如果您想检测这个初始 state,您可以在浏览器的本地存储中存储一些令牌值,您可以在新页面上自行检查,或者您可以设置一个超时时间,以便您希望用户重新访问登录,然后导航到index.html页面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM