使用connect-auth在nodejs中重定向

时间:2011-08-01 12:51:48

标签: node.js oauth connect

我使用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;
            }
        });

您知道有任何解决方法吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

我在使用FB进行身份验证时遇到了类似的问题。几个小时后,我转向了Everyauth - https://github.com/bnoguchi/everyauth

就像一个魅力

答案 1 :(得分:0)

这应该工作得很好。许多人会发生什么,他们配置的重定向将他们带回到与他们离开的主机不同的主机,因此他们会得到一个不同的会话,这会给你相当不期望的行为。您是否恰好抓住了“正在”编写标题的行号?