我想为需要注销并且未在前端启用JavaScript的用户提供Node.JS Express路由包装器。 DB
是我对Firebase的引用:
router.get('/logout', function(req, res) {
DB.unauth();
res.redirect(302, '/');
});
当我尝试以这种方式注销时,我收到以下错误:
错误:发送后无法设置标头。
documentation for Firebase.unauth()很轻,但在路线中调用它(有或没有res.redirect
)会导致错误。有没有人对此问题有任何建议或解决方法?
答案 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来支持在用户不支持时注销用户?他们甚至可以首先登录吗?