我有一个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登录应用程序?
答案 0 :(得分:1)
CORS不是你的问题。
Passport希望重定向您的用户(根据您传递给passport.authenticate
的值)。例如:
app.get('/auth/facebook/callback',
passport.authenticate('facebook', { successRedirect: '/',
failureRedirect: '/login' }));
Passport将通过返回/
告诉浏览器重定向到/login
或302
。您可以删除第二个参数passport.authenticate
:
app.get('/auth/facebook/callback',
passport.authenticate('facebook'));
这将在成功验证时调用next()
(否则返回401
。
此处的示例使用FacebookStrategy
,但它适用于任何策略。