我有两个对服务器的异步调用。调用 A 对用户进行身份验证并返回 session token 。调用 B 从服务器获取数据。调用 B 需要来自调用 A 的 session token ,以便服务器接受请求并返回数据。
10 分钟后, session token 过期,服务器拒绝向调用 B 返回数据。在这种情况下,我们必须再次调用 A 来重新进行身份验证并获取可用于调用 B 的新的有效 session token .
我面临的问题是我想自动化此操作,但我不知道如何通过简洁的设计来实现它。我想以这种方式实现它,如果调用 B 从服务器接收到“ session 已过期”,它将启动异步调用 A 并使用调用 A 提供的新 session token 重新启动自身。 Objective-C 和 iOS 框架提供的工具?
最佳答案
如果您使用类似 AFNetworking 的内容,您将创建一个 AFHttpClient 的子类,它知道如何执行这两个操作。在 callB 的实现中,检查是否从服务器获得无效的 session 响应并手动调用 A,然后在其完成委托(delegate)中再次调用 B。
对于在手动重新进行身份验证后调用 callB
,您可能需要捕获 callB
的参数 - 如果它只是几条数据、局部变量会工作得很好。如果这变得笨拙,您可能会在运行时和 record the NSInvocation 上变得棘手。初始 callB
并稍后再次执行;基本上,您的 callB
方法将被调配/代理以检查 session 是否有效。
关于ios - 通过异步调用自动重新登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19464852/