Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 仅允许页面上经过身份验证的用户_Javascript_Firebase_Firebase Authentication - Fatal编程技术网

Javascript 仅允许页面上经过身份验证的用户

Javascript 仅允许页面上经过身份验证的用户,javascript,firebase,firebase-authentication,Javascript,Firebase,Firebase Authentication,我想知道如何将页面配置为只允许Firebase中经过身份验证的用户。我在设置我的站点时遇到了困难,我希望用户输入登录名和密码,并且在验证后,将被定向到他的个人资料 用户被定向到的配置文件(网页)具有URL www.example.com/“user.uid”/index.html 但是只有经过身份验证的用户才能访问此页面,因此如果有人访问URL www.example.com/“user.uid”/index.html 必须将用户定向到主页 登录页面上的代码: btnLogin.addEven

我想知道如何将页面配置为只允许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经过优化,可用于客户端,特别是单页应用程序。您可以执行以下操作之一:

  • 处理身份验证检查客户端:在该页面www.example.com/“user.uid”/index.html上添加onAuthStateChanged侦听器:如果用户未登录并且与该页面的uid不匹配,请重定向到登录页面

  • 使用饼干。登录后,您可以将Firebase ID令牌发送到后端并创建会话cookie,或者仅使用ID令牌作为会话cookie。确保在执行此操作之前验证该ID令牌。Firebase有一个node.js和java库来帮助实现这一点。当Firebase ID令牌每小时过期时,您还必须确保在客户端不断侦听身份验证更改。无论如何,使用cookie,下次用户请求受限资源时,在您提供该资源之前,请检查cookie是否有效并与预期用户匹配,否则将302发送到登录页面