使用Firebase和Node.JS注销

时间:2015-07-22 03:15:10

标签: node.js firebase logout firebase-authentication

我想为需要注销并且未在前端启用JavaScript的用户提供Node.JS Express路由包装器。 DB是我对Firebase的引用:

router.get('/logout', function(req, res) {
    DB.unauth();
    res.redirect(302, '/');
});

当我尝试以这种方式注销时,我收到以下错误:

  

错误:发送后无法设置标头。

documentation for Firebase.unauth()很轻,但在路线中调用它(有或没有res.redirect)会导致错误。有没有人对此问题有任何建议或解决方法?

2 个答案:

答案 0 :(得分:1)

所以我遇到了同样的问题。对我来说,我正在使用异步authDataCallback函数。 显然onAuth设置了标题,因此当您尝试转到/注销时,您的标题已设置,重定向将失败。所以我做的是切换authDataCallback 我已经检查登录状态:

List<Integer>

然后我的登出路线完美无瑕。

var authData = ref.getAuth();

if (authData) {
console.log("User " + authData.uid + " is logged in with " + + authData.provider);
} else {
console.log("User is logged out");
}

答案 1 :(得分:0)

看起来重定向时会抛出错误 - 一旦发送了正文,就无法使用标题。也许试试:

response.writeHead(302, { Location: '/' });
response.end();

如果这不起作用,我会在.unauth()实际设置标题上投入资金,如果是,则可能需要使用ol'<noscript>标记。< / p>

所有这些都表示:您正在构建一个使用JavaScript在后端与Firebase集成的应用。为什么要构建一个现代的网络应用程序(可能)仅仅依赖于JavaScript来支持在用户不支持时注销用户?他们甚至可以首先登录吗?