我目前正在开发一个在前端使用 AngularJS 并在后端使用 Express 的宠物项目。Angular 前端使用 Restangular 模块使用 RESTful 请求与后端对话。在后端,会话使用 Passport 进行身份验证。在浏览器上,身份验证工作得非常好(例如,使用 Postman,我可以发布我的登录信息,然后从服务器获取我想要的任何内容)。
问题是使用 Restangular,我首先通过发送带有登录信息的 POST 请求来“登录”。主要逻辑如下图所示:
account = Restangular.all 'login'
$scope.loginInformation =
{
username: ''
password: ''
}
succesfulLogin = (res) ->
console.log res
unsuccesfulLogin = () ->
console.log "Login failed"
console.log $scope.loginInformation
$scope.login = () ->
account.post($scope.loginInformation).then succesfulLogin, unsuccesfulLogin
输入正确的用户名和密码后,控制台会打印响应“登录成功。您现在已登录”,这是我们编码后在正确登录时发送的响应(与我们在邮递员上看到的响应相同)。
现在的问题是,无论我尝试 GET 什么,在代码中完成的每个 GET 请求都会返回 403 Forbidden 响应。
我在控制台上得到相同的响应
GET http://[ADDRESS] 403 (Forbidden)
Object {data: "Error: Not Authenticated", status: 403, headers: function, config: Object}
我不明白浏览器和 Postman 是如何工作的,但我的应用程序不明白。
有没有人有类似设置的运气?
我的直觉告诉我,这与 angular 处理 cookie 的方式有关(虽然不确定)。