ng-token-auth, ionic, devise_token_auth;令牌在 XHR 请求中随机丢失



>我继承了一个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 问题,因为它总是会发生或永远不会发生。(此外,我正在使用离子博客中解释的代理(
  • 也许它可能与临时标题铬错误有关。但是,我怎么能确定呢?

令我困惑的是,它只是偶尔发生,而不是总是发生。(后端没有错误(

我在devise_token_auth文档中找到的唯一解决方法是更改config.change_headers_on_each_requestfalse避免以这种方式重新生成令牌。

但我不喜欢这个解决方案,因为我认为它以一种不安全的方式隐藏了真正的问题,而不是解决代币损失。有什么建议吗?

请检查一下:

    版本
  • :您使用的是此 gem 的哪个版本(以及 ng-token-auth、jToker 或 Angular2-Token,如果适用(?

  • 请求和响应标头:可以在浏览器 Web 检查器的"网络"选项卡中找到这些标头。

  • Rails Stacktrace:这可以在API的日志/开发.log中找到。

  • 环境信息:您的应用程序与参考实现有何不同?

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

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

    Gems:你是否正在使用MongoDB,Grape,RailsApi,ActiveAdmin等?

    自定义

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

    自定义前端:您是否正在使用ng-token-auth,jToker,Angular2-令牌,还是别的什么?

最新更新