我使用带有 Connect 的 Nodejs 0.4.1 和 connect-auth 0.3.0 进行身份验证。 当我使用任何策略登录时,我都会进行重定向。
问题是我在编写重定向标头(302)时遇到此错误:“将标头发送到客户端后无法呈现标头。”。看来标题已经写好了。
req.authenticate(['google'], function(error, authenticated)
{
if(error)
{
res.writeHead(302, {'Location': "/" + result.userName});
res.end();
return;
}
else if( authenticated === undefined)
{
return;
}
else if( authenticated )
{
sys.log("Authenticated from google " + util.inspect(req.getAuthDetails()));
req.session.from = "google";
RegisterOrLogin(...., function(result)
{
if(result.error == false)//logged in successfuly
{//redirect
res.writeHead(302, {'Location': "/" + result.userName});
res.end();
}
else//could not log in
{
res.writeHead(302, {'Location': '/'});
res.end();
}
});
return;
}
});
您知道有什么解决方法吗?
谢谢你。
我在使用 FB 进行身份验证时遇到了类似的问题。经过几个小时的搞乱后,我切换到 everyauth -https://github.com/bnoguchi/everyauth
就像魅力一样
这应该可以正常工作。很多人会遇到的情况是,他们配置的重定向将他们带回与他们离开的主机不同的主机,因此他们会获得不同的会话,这会给您带来相当意外的行为。您是否碰巧发现了“正在”写入标题的行号?