访问令牌过期后处理 API 调用

问题描述 投票:0回答:1

我正在开发一个应用程序,我们将在其中介绍

token expiry
。令牌将于每天晚上
12.00 am
到期。关于我们如何处理应用程序中的令牌过期,我心中有几个问题。

我做了什么:-

每当应用程序启动时,我都会在

NSUserDefaults
中查找令牌 并检查它是否仍然有效。如果它无效,那么我打电话 令牌刷新 API 并存储新令牌。之后,每个 API 都会调用 使用新令牌调用。

我心中的疑问:-

一名用户在 11.59 使用该应用程序,他在应用程序的主页上, 现在是 12.01,用户移至应用程序的第二页,即我所在的位置 调用 3 个不同的 API 请求。第一个 API 请求给了我 状态码为

401
,所以我调用令牌刷新API。在其他 2 之间 请求也可能被调用,并且它们也调用了刷新令牌 API。

如何确保一旦获得

401
,所有 API 调用都将失效,直到我没有刷新令牌为止?

ios swift token
1个回答
0
投票

不太清楚为什么代币过期会很困难,通常代币会在滑动范围后(比如 24 小时后)过期,而不是硬停止。

无论如何,最简单的方法是使用一个辅助函数来获取从 NSUserDefaults 读取的令牌,您可以在应用程序启动时以及每次 API 调用之前调用它。第一次调用验证令牌还存储过期时间,以便下次调用此函数时,您知道令牌是否应该过期,而无需再次调用服务器进行验证。这比向服务器发出大量失败的请求要好得多,因为您知道它们会失败。 这样您的服务器上就有干净的日志,并且您可以监视不应该存在的错误。

第二部分变得不太需要,虽然很好(如果令牌由于上午 12:00 到期之外的其他原因在服务器上无效,或者由于时差、其他错误等),也可以使用 GetToken 方法来处理,如果您正在刷新令牌存储的过程中,则会有一个标志来识别此类标志,这样调用函数将等待或重试。

© www.soinside.com 2019 - 2024. All rights reserved.