【发布时间】:2016-03-12 18:35:38
【问题描述】:
我继承了一个 Ionic 应用程序,它使用 ng-token-auth+devise_token_auth 来处理身份验证和前后之间的会话。
发生的事情很奇怪。有时(特别是在连接速度较慢的情况下)请求(或响应)会丢失,之后我只会收到 401 http 错误。
我知道每次我发送请求时令牌都会过期,但是当xhr 请求被取消(我想是由服务器或浏览器,我不知道)时,令牌就会过期而没有替换为devise_token_auth gem 生成的新的。
我知道 Rails,但我不熟悉 Angular,也不熟悉 Ionic,我也不知道该去哪里找。
在阅读了很多似乎没有人遇到我的问题的 SO 答案后(在本地和暂存/生产中发生),我检查了以下内容
-
storage设置为localStorage。 -
config.batch_request_buffer_throttle = 20.seconds - 取消的请求之间没有模式,有时我执行获取用户名,有时是帖子或评论。
- 不是 CORS 问题,因为它总是或永远不会发生。 (此外,我正在使用ionic blog 中解释的代理)
- 可能与provisional headers chrome bug 有关。但是,我怎么能确定呢?
令我困惑的是,它只会有时而不是总是发生。 (并且后端没有错误)
我发现in the devise_token_auth documentation 的唯一解决方法是将config.change_headers_on_each_request 更改为false,从而避免重新生成令牌。
但我不喜欢这种解决方案,因为我认为它以不安全的方式隐藏了真正的问题,而不是解决令牌丢失问题。有什么建议吗?
【问题讨论】:
-
您找到解决方案了吗?我有同样的问题..
-
遗憾的是没有。 :( 但我发现是由于中间的请求失败导致令牌被丢弃。但我们仍然使用
false来解决这个问题。
标签: angularjs cordova ruby-on-rails-4 devise-token-auth