CORS 登录到 expressjs/passportjs 应用程序 401 未经授权
Posted
技术标签:
【中文标题】CORS 登录到 expressjs/passportjs 应用程序 401 未经授权【英文标题】:CORS Logging into an expressjs/passportjs app 401 Unauthorized 【发布时间】:2014-07-06 04:06:18 【问题描述】:我正在将 Web 应用程序转换为 cordova 应用程序,唯一阻止我的是该应用程序是基于 expressjs 的,因为 cordova 需要 index.html 我需要使用 CORS 来呈现应用程序并提供登录会话。
我可以将 ajax/CORS 用于常规页面,但在授权方面我被卡住了。
我使用 passportjs 在此 POST 路由 app.post('/login', passport.authenticate('local-login'));
上进行身份验证,因此在我的客户端 Cordova 应用程序上我进行了 ajax 调用来为我提出此请求。
$('body').on('submit', '#logIn', function(e)
e.preventDefault();
var formData = $(this).serialize();
console.log(formData);
$.ajax(
url: "http://mysite.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);
);
);
当我发出 POST 请求时,我得到了一个 401 Unauthorized
,所以我一直在研究它,但我仍然不确定为什么它没有授权?
【问题讨论】:
【参考方案1】:来自Passport docs:
默认情况下,如果身份验证失败,Passport 将响应 401 Unauthorized 状态,并且不会调用任何其他路由处理程序。
您发布的用户名/密码组合无效。
【讨论】:
哦,好的,再次感谢我会专注于确保正确发送用户/通行证。 很好,修复了它...哇希望我能更加注意我将JSON.stringify(formData)
更改为formData
愚蠢的错误.. 现在帖子就在那里,我需要做吗另一个 ajax 请求成功或在服务器上发送数据?
通过 AJAX 成功验证不会刷新页面。如果你想改变某些东西,你必须自己改变它。
是的,我已经解决了,抱歉,这只是我把头绕过去的问题。谢谢
没问题。您在神奇的编程之旅中又学到了一件事!以上是关于CORS 登录到 expressjs/passportjs 应用程序 401 未经授权的主要内容,如果未能解决你的问题,请参考以下文章