【问题标题】:ng-token-auth, ionic, devise_token_auth; token get lost randomly in xhr requestng-token-auth,离子,devise_token_auth;令牌在 xhr 请求中随机丢失
【发布时间】: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


【解决方案1】:

请检查一下:

  • 版本:您使用的是这个 gem 的哪个版本(以及 ng-token-authjTokerAngular2-Token,如果适用)?

  • 请求和响应标头:可以在浏览器的网络检查器的“网络”标签中找到这些标头。

  • Rails Stacktrace:可以在 API 的 log/development.log 中找到。

  • 环境信息:您的应用程序与reference implementation 有何不同?

    这可能包括(但不限于)以下详细信息:

    路由:您是否使用了一些疯狂的命名空间、范围或约束?

    Gems:您使用的是 MongoDB、Grape、RailsApi、ActiveAdmin 等吗?

    自定义覆盖:您在[自定义控制器覆盖]方面做了什么 5?

    自定义前端:您使用的是ng-token-authjTokerAngular2- Token 还是其他?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-16
    • 2019-06-09
    • 2018-01-17
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多