簡體   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