Ajax 使用CORS登录expressjs应用程序

Ajax 使用CORS登录expressjs应用程序,ajax,node.js,cordova,cors,Ajax,Node.js,Cordova,Cors,我有一个位于nodejs服务器上的expressjs,还有一个客户端cordova应用程序向某些路由发出ajax请求 这很好,直到我需要使用passportjs发出POST登录请求,有一个302重定向发生,所以我在打这个电话时临时移动了这个302 $('body').on('submit', '#logIn', function(e){ e.preventDefault(); var formData = $(this).serialize(); $.ajax({

我有一个位于nodejs服务器上的expressjs,还有一个客户端cordova应用程序向某些路由发出ajax请求

这很好,直到我需要使用passportjs发出POST登录请求,有一个302重定向发生,所以我在打这个电话时临时移动了这个
302

$('body').on('submit', '#logIn', function(e){
    e.preventDefault();

    var formData = $(this).serialize();

    $.ajax({
        url: "http://mydomain.io:3300/login",
        data: JSON.stringify(formData),
        type: "POST",
        crossDomain: true,
        dataType: "json",
        async: true,
        success: function(response){
            alert('succeeded!');
            console.log(response);
            alert(response);
        },
        failure: function(message){
            alert("failed");
            console.log(message);
            alert(message);
        }
    });

});

所以我的问题是,如何使用CORS登录到使用客户端ajax的应用程序?

CORS不是您的问题

Passport希望重定向您的用户(基于您传递给
Passport.authenticate
)的值)。例如:

app.get('/auth/facebook/callback',
  passport.authenticate('facebook', { successRedirect: '/',
                                      failureRedirect: '/login' }));
Passport将通过返回
302
通知浏览器重定向到
/
/login
。通过将第二个参数删除到
passport.authenticate
,可以删除重定向:

app.get('/auth/facebook/callback',
  passport.authenticate('facebook'));
这将在成功身份验证时调用
next()
(否则返回
401


这里的示例使用了
FacebookStrategy
,但它适用于任何策略。

我不认为CORS是您的问题。你不应该用passportI通过AJAX登录我觉得这不太理想,但我想不出任何其他方法,因为该应用程序基于expressjs,现在我正在将其转换为cordova/phonegap应用程序,这是我唯一能想到的。哦,哇,这很有意义,我真的没有想过整个过程。现在试一试:)@MichaelJosephAubry没问题-如果这回答了你的问题,别忘了投票/接受。当然,我会试一试,因为我可能有一些基本问题,我首先使用的是本地策略,而不是oauth facebook策略(至少现在不会)我是否只需取消successRedirect回调,并使用类似以下的post方法
app.post('/login',passport.authenticate('local-login');
?太棒了,很高兴我能提供帮助。好的,我得到了401,但它出现了
401未经授权的
,我将接受此方法并对该错误进行研究。谢谢