使用CORS登录expressjs应用程序

时间:2014-05-17 21:37:37

标签: ajax node.js cordova cors

我有一个nodejs坐在nodejs服务器上,我有一个客户端cordova应用程序向某些路由发出ajax请求。

这是好的,直到我需要使用passportjs发出POST请求才能登录,有一个302重定向发生,所以我在拨打电话时得到302 Moved Temporarily

$('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登录应用程序?

1 个答案:

答案 0 :(得分:1)

CORS不是你的问题。

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

app.get('/auth/facebook/callback',
  passport.authenticate('facebook', { successRedirect: '/',
                                      failureRedirect: '/login' }));

Passport将通过返回/告诉浏览器重定向到/login302。您可以删除第二个参数passport.authenticate

来删除重定向
app.get('/auth/facebook/callback',
  passport.authenticate('facebook'));

这将在成功验证时调用next()(否则返回401

此处的示例使用FacebookStrategy,但它适用于任何策略。