使用connect-auth在nodejs中重定向

问题描述 投票:0回答:2

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

您知道有什么解决方法吗?

谢谢你。

node.js oauth node.js-connect
2个回答
1
投票

我在使用 FB 进行身份验证时遇到了类似的问题。经过几个小时的搞乱后,我切换到 everyauth -https://github.com/bnoguchi/everyauth

就像魅力一样


0
投票

这应该可以正常工作。很多人会遇到的情况是,他们配置的重定向将他们带回与他们离开的主机不同的主机,因此他们会获得不同的会话,这会给您带来相当意外的行为。您是否碰巧发现了“正在”写入标题的行号?

© www.soinside.com 2019 - 2024. All rights reserved.