2017-02-18 111 views
0

我想知道如何將頁面配置爲只允許在Firebase中通過身份驗證的用戶。我在設置我的網站時遇到了困難,我希望用戶輸入登錄名和密碼,並且在認證之後,將被定向到他的個人資料。只允許通過身份驗證的用戶在頁面上

配置文件(網頁),該用戶被導向,具有URL

www.example.com/"user.uid"/index.html

但這頁面只能針對誰被認證的用戶才能訪問,所以如果有人訪問URL

www.example.com/"user.uid"/index.html

必須將用戶定向到主頁

http://www.example.com

登錄頁面上的代碼:

btnLogin.addEventListener('click', e =>{ 
     const email = txtEmail.value; 
     const pass = txtPassword.value; 
     const auth = firebase.auth(); 
     const promise = auth.signInWithEmailAndPassword(email,pass); 
     promise 
     .then(user => window.location.href="http://www.example.com/" + user.uid + "/index.html") 
     .catch(e => console.log(e.message)); 
    }) 

客戶端頁面上的代碼:

firebase.auth().onAuthStateChanged(firebaseUser => { 
     if(firebaseUser){ 
      console.log(firebaseUser); 
     }else{ 
      window.location.href = "http://www.example.com"; 
      console.log("offline"); 
        } 
}); 

我遇到的問題是,當您重定向到客戶端頁面時,用戶的狀態變爲脫機狀態

回答

0

Firebase針對客戶端和特定單頁應用程序進行了優化。您可以執行下列操作之一:

  1. 處理身份驗證檢查客戶端:在該頁面www.example.com/"user.uid"/index.html添加onAuthStateChanged聽衆:如果用戶沒有登錄in和與該頁面的uid不匹配,則重定向到登錄頁面。

  2. 使用cookie。登錄後,您可以將Firebase ID令牌發送到後端,並創建一個會話cookie或僅使用ID令牌作爲會話cookie。確保您在此之前驗證該ID令牌。 Firebase有一個node.js和java庫來幫助解決這個問題。由於Firebase ID令牌每小時過期,因此您還必須確保您經常在客戶端收聽身份驗證更改。無論如何,使用cookie時,下次用戶請求受限資源時,您檢查cookie是否有效,並在提供資源之前匹配預期的用戶,否則將302添加到登錄頁面。

相關問題