我使用nodejs 0.4.1和Connect以及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;
}
});
您知道有任何解决方法吗?
谢谢。
答案 0 :(得分:1)
我在使用FB进行身份验证时遇到了类似的问题。几个小时后,我转向了Everyauth - https://github.com/bnoguchi/everyauth
就像一个魅力
答案 1 :(得分:0)
这应该工作得很好。许多人会发生什么,他们配置的重定向将他们带回到与他们离开的主机不同的主机,因此他们会得到一个不同的会话,这会给你相当不期望的行为。您是否恰好抓住了“正在”编写标题的行号?