AngularJS / Restangular 会话

Posted

技术标签:

【中文标题】AngularJS / Restangular 会话【英文标题】:AngularJS / Restangular sessions 【发布时间】: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设置中添加身份验证 【参考方案1】:

我想你正在寻找这个:

RestangularProvider.setDefaultHttpFields(
    withCredentials: true
);

将此行添加到 app.config

【讨论】:

这个配置告诉 Restangular(或幕后的 $http 对象)在请求中包含 Access-Control-Allow-Credentials 标头。阅读 this thread 了解此标头的作用。

以上是关于AngularJS / Restangular 会话的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS / Restangular 会话

angularjs之Restangular用法

无法在 Restangular 配置函数(AngularJs)中传递依赖项

角度 $http.get / restangular 调用失败

IE9 CORS 和restangular

Restangular 不会改变 Http Content-Type