我们在后端使用了devise(带有change_headers_on_each_request = true
),它对于快速网络很有效。最近,在慢速网络上,由于使用了旧令牌,我们开始出现频繁注销用户的问题。
通常会发生以下情况:
- 用户登录并获取auth1标头。
- 用户使用auth1发送请求,但未能获得响应(网络请求超时或用户在获得响应之前关闭了应用程序)。
- 与此同时,后端生成了auth2,试图将其发送给User,但是User无法接收它。
- 用户使用已知的最新auth1发送第二个请求。
- 用户获得401,因为后端的auth1已经替换为auth1。
到目前为止,我只能想到:
- 在本地保存用户凭据,并进行“影子”重新登录以“刷新”令牌
- 允许auth1生存很长时间并可以重复使用
有什么好办法解决这个问题?
P.S。我认为设计追踪器中已经有一个issue与我的差不多。