我正在开发一个应用程序,我们将介绍token expiry
。该令牌将在12.00 am
每晚过期。关于我们如何在应用程序中处理令牌到期,我几乎没有问题。
What I have done:-
每当应用程序启动时,我都会在
NSUserDefaults
中查找令牌 并检查它是否仍然有效。如果它无效,那么我打电话 令牌刷新API并存储新令牌。之后,每个API调用 使用新令牌调用。
Question in my mind:-
一位用户正在11.59使用该应用,他在应用的主页上, 现在它的12.01和用户进入应用程序的第二页,我在哪里 调用3个不同的API请求。第一个API请求给了我 状态代码为
401
,因此我调用了令牌刷新API。在其他2之间 请求也可能被调用,他们也调用了刷新令牌 API。如果我得到
401
,我怎样才能确定,在我没有令牌刷新之前,所有API调用都会失效?
答案 0 :(得分:0)
不完全确定为什么你会很难获得令牌到期,通常令牌在滑动比例(比如24小时后)之后到期而不是硬停止。
在任何情况下,最简单的方法是使用一个辅助函数来获取它从NSUserDefaults读取的令牌,在app start和每个API调用之前调用它。第一次调用验证令牌还存储到期时间,以便下次调用此函数时,您知道令牌是否应该已过期而不调用服务器再次验证。它比向服务器发出大量失败的请求要好得多,因为你知道它们会失败。 这样,您就可以在服务器上清理日志,并且可以查看不应该存在的错误。
第二部分变得不那么需要虽然很好(如果服务器上的令牌由于其他原因而不是你的上午12:00到期,或由于时差,其他错误等),也可以用你的GetToken处理方法,如果你正在刷新令牌存储的过程中有一个标识来识别这样,那么调用函数会等待或重试。