2017-02-18 82 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添加到登录页面。

相关问题