Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.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 使用express.js登录时Firebase身份验证重定向_Javascript_Node.js_Express_Firebase_Firebase Authentication - Fatal编程技术网

Javascript 使用express.js登录时Firebase身份验证重定向

Javascript 使用express.js登录时Firebase身份验证重定向,javascript,node.js,express,firebase,firebase-authentication,Javascript,Node.js,Express,Firebase,Firebase Authentication,在我的应用程序中,我有一个管理员控制面板,只允许管理员访问。这是密码 app.get('/acp', function (req, res) { var user = firebase.auth().currentUser; if (user) { // Logged in res.send('Hello world'); } else { // Not logged in res.redirect('/a

在我的应用程序中,我有一个管理员控制面板,只允许管理员访问。这是密码

app.get('/acp', function (req, res) {
    var user = firebase.auth().currentUser;

    if (user) {
        // Logged in
        res.send('Hello world');
    } else {
        // Not logged in
        res.redirect('/admin');
    }
});
但当用户未登录时,他将被重定向到管理员登录页面,该页面也可以正常工作

问题是,当用户登录时,我不知道如何将其重定向到管理控制面板

app.get('/admin', function (req, res) {
    res.sendFile(__dirname + '/public/admin.html');
});

app.post('/admin', function (req, res) {

    const email = req.body.email;
    const password = req.body.password;

    
    firebase.auth().signInWithEmailAndPassword(email, password).catch(function(error) {

        var errorCode = error.code;
        var errorMessage = error.message;

    });

    res.redirect('/acp'); // the problem

});
返回一个承诺:

app.post('/admin',函数(req,res,next){
const email=req.body.email;
const password=req.body.password;
firebase.auth()
.使用电子邮件和密码登录(电子邮件、密码)
.then(函数(用户){res.redirect('/acp');})
.接住(下一个);
});
返回承诺:

app.post('/admin',函数(req,res,next){
const email=req.body.email;
const password=req.body.password;
firebase.auth()
.使用电子邮件和密码登录(电子邮件、密码)
.then(函数(用户){res.redirect('/acp');})
.接住(下一个);
});

不用担心。另外,您对Firebase API的auth方法的使用也有点奇怪。看起来你只能有一个单一的,已登录的管理员,如果有一个已登录的管理员,似乎任何人都可以访问管理路由。如果你还没有考虑到这一点,现在也许是考虑一下的好时机。你是对的。我刚刚检查了我的手机,我可以访问管理控制面板。最好的方法是什么?你能给我一个链接或者通过编辑你上面的帖子来解释吗?只需要一点。这是一个更复杂的问题,但最简单的解决方案是要求为每个与管理员相关的请求提供电子邮件/密码,并在每个请求处理程序中执行signin和siginout。也就是说,不要让服务器以管理员身份登录。你真的救了我的命。;)别担心。另外,您对Firebase API的auth方法的使用也有点奇怪。看起来你只能有一个单一的,已登录的管理员,如果有一个已登录的管理员,似乎任何人都可以访问管理路由。如果你还没有考虑到这一点,现在也许是考虑一下的好时机。你是对的。我刚刚检查了我的手机,我可以访问管理控制面板。最好的方法是什么?你能给我一个链接或者通过编辑你上面的帖子来解释吗?只需要一点。这是一个更复杂的问题,但最简单的解决方案是要求为每个与管理员相关的请求提供电子邮件/密码,并在每个请求处理程序中执行signin和siginout。也就是说,不要让服务器以管理员身份登录。你真的救了我的命。;)