我正在为移动应用程序(Android App)开发RestFul Apis。我正在使用OTP进行两步验证并记住我的令牌。对于记住我的令牌,我目前正在使用Remember Me(任何其他类似的策略npm是受欢迎的)。 npm基本上为cookie设置了一个唯一的令牌,App可以使用它来验证自己。根据上述NPM中的文档,它建议在每次请求后重新生成令牌。 但是,如果移动应用程序发出多个并行请求,则所有并行请求都使用相同的令牌。这无疑给出了一个auth错误。我想这是常见的情况。我想知道是否有一种标准的方法来处理这个问题?
当前工作流程
工作流程问题 该应用已成功登录并具有有效的Cookie。
答案 0 :(得分:0)
好的,检查您的更新我想到3个解决方法。假设我们有3个动作,(a),(b)和(c)需要令牌来使用API。
这只是一个类,文件,cookie或对象,您可以在其中保存当前令牌,并且可以在操作完成后使用新令牌进行更新。
此解决方案的问题在于,如果您使用相同的令牌同时创建(a),(b)和(c),则完成的第一个将更新商店,而另外两个将失败。您可以同步或同时运行它们。
如果你想这样做,也许最好有一个:
假设您的应用程序经常执行(a),(b)和(c)。在这种情况下,最好只在一个操作中对它们进行分组,并在服务器上只使用一个回调执行它。在您的情况下,这可能会很复杂,因为它需要创建新资源或考虑您对问题的建模。
我在一些项目中看到了这一点。您为令牌设置了软到期,假设为15分钟(甚至更短)。时间过后,您将为客户端提供一个新令牌,在此之前您保留相同的令牌。 (a),(b)和(c)将以相同的标记同时运行。在过期时间附近运行请求时会出现问题,具体取决于完成请求所需的时间。
我无法向您提供有关实施的更多详细信息,因为我不知道您使用的是哪种语言或框架实现客户端,而且我从未制作过Android应用程序,但我认为这对我来说是一个好主意。尝试其中一个想法或混合它们。祝福。
我不明白在这种情况下 parallel 是什么意思。
尝试在您的应用中创建令牌存储资源,请求完成后,每个并行请求都会消耗并更新。
如果所有请求都是在发送时发送的,那么将它们组合在一个操作中可能是个好主意,但这可能需要更改API端点。