【问题标题】:AngularJS / Restangular sessionsAngularJS / Restangular 会话
【发布时间】:2014-01-24 11:27:31
【问题描述】:

我需要对会话/身份验证做任何特别的事情吗?通过restangular post方法登录后,我的服务器看不到我的会话。登录成功,但之后在服务器上看不到任何会话。如果我在外面使用普通帖子登录,然后尝试请求页面,它工作正常。我还注意到 chrome 在标题中发送了以下内容:

Cookie:_rexbro_session=g2wAAAABaAJkAAxjdXJyZW50X3VzZXJhAmo=--E0687A67DBE48DA40B6957CBCF6E83FB0E612660

这不是通过 restangular 请求发送的。

我还应该提到,当我通过 restangular 登录时,服务器正在响应以下标头:

set-cookie:_rexbro_session=g2wAAAACaAJkAAxjdXJyZW50X3VzZXJhAmgCZAAEdXNlcmgIZAASRWxpeGlyLlVzZXIuRW50aXR5ZAALRWxpeGlyLlVzZXJhAm0AAAASYXZvaWRpYW1AZ21haWwuY29tbQAAAA1KYXlzb24gQmFpbGV5bQAAADwkMmEkMTAkNHNsQVFFRGRDcXd1R3JNNVYwOXBTLkx3MHpVeElNLy5tbVM2eTVmc3BFa3NUbHhuTUtiMzJoB2QAFEVsaXhpci5FY3RvLkRhdGVUaW1lYgAAB91hBGEcYRFhD2EUaAdkABRFbGl4aXIuRWN0by5EYXRlVGltZWIAAAfdYQVhA2EVYR5hFmo=--D3F8D9A8355421B8571DB691ED5C082AD183B034; path=/; HttpOnly

但我看不出有什么用。

提前致谢。

编辑:我应该声明我存储会话的服务器,即 api 服务器,与服务于前端的服务器是分开的。

【问题讨论】:

  • 看起来您的服务器正在将 cookie 设置在客户端 OK 并且客户端正在尝试将其发回。您有多个应用程序服务器吗?您能否验证第二个请求是否包含 cookie 并在您的第二个请求中访问正确的服务器(与您会话的服务器)?我遇到了负载均衡器无法识别通过 XHR 设置的 cookie 的问题。在设置 cookie 时,我必须重新加载完整的 HTTP 以使 LB 保持我的 http 请求到达正确的服务器,而不是在整个农场循环。
  • 我最终只是切换到令牌授权。因为它更容易并且工作得很好。
  • @JaysonBailey - 你有关于如何为restangular实现令牌身份验证的示例代码吗?您可以发布的任何 sn-ps 都很棒。我现在需要在我的restangular设置中添加身份验证

标签: angularjs restangular


【解决方案1】:

我想你正在寻找这个:

RestangularProvider.setDefaultHttpFields({
    withCredentials: true
});

将此行添加到 app.config

【讨论】:

  • 这个配置告诉 Restangular(或幕后的 $http 对象)在请求中包含 Access-Control-Allow-Credentials 标头。阅读 this thread 了解此标头的作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
相关资源
最近更新 更多