我想知道如何配置页面以仅允许Firebase中经过身份验证的用户。我在设置网站方面遇到困难,希望用户输入登录名和密码,并在身份验证后将其定向到他的个人资料。
用户所指向的配置文件(网页)具有URL
www.example.com/"user.uid"/index.html
但是只有经过身份验证的用户才能访问此页面,因此,如果有人访问该URL
www.example.com/"user.uid"/index.html
必须将用户定向到主页
登录页面上的代码:
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");
}
});
我遇到的问题是,当您重定向到客户端页面时,用户状态变为脱机
Firebase经过优化,可以处理客户端,尤其是单页应用程序。您可以执行以下操作之一:
处理身份验证检查客户端:在该页面上添加onAuthStateChanged侦听器www.example.com/"user.uid"/index.html:如果用户未登录且与该页面的uid不匹配,请重定向至登录页面。
使用Cookie。登录后,您可以将Firebase ID令牌发送到后端并创建会话Cookie,也可以仅将ID令牌用作会话Cookie。在执行此操作之前,请确保验证该ID令牌。Firebase有一个node.js和Java库来帮助实现这一点。您还必须确保随着Firebase ID令牌每隔一小时失效,您就不断在客户端上监听身份验证更改。无论如何,使用cookie时,下一次用户请求受限资源时,您需要在提供资源之前检查cookie是否有效并与预期用户匹配,否则将其登录到登录页面302。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句