3

我已经开始为我们将要开发的利用基于 REST 的 Web 服务(在 Java 中使用 restEASY 实现)的 iOS 应用程序进行概念验证。我将使用 RestKit 作为我的客户端服务库,并且一直在阅读文档和一些示例。

绝大多数服务将要求用户使用用户名和密码进行身份验证。我们有接受包含凭证的 JSON 对象的身份验证服务,因此这部分很容易。我的问题是,当服务说需要身份验证时,我们如何处理 iOS 部分?

想象一下这个场景……

用户启动我们的应用程序并识别出用户需要进行身份验证。弹出一个模态视图控制器,提示用户进行身份验证,并提交请求。然后,用户可以毫无问题地进行一堆 REST 调用。最终,他们关掉了手机(应用程序仍然处于活动状态)并在一个小时左右后回来使用。他们单击一个按钮来触发另一个 REST 调用,但此时服务器端会话已过期。

理想情况下,我们希望能够识别服务器已指示需要身份验证,并再次弹出模态视图控制器。但是,RestKit 对此有支持吗?我们有什么方法可以注册一个能够识别服务器已经以这种方式响应的“全局响应处理程序”?

我们可以返回 JSON 中的状态码或使用 HTTP 状态码。我们的服务具有灵活性。真正的问题是如何在客户端以理想的方式处理这个问题。而且,一旦我们重新验证了用户的身份,有没有办法重放他们最初尝试提交的请求?或者,他们是否必须重新开始行动?

对不起,如果这没有意义或者这是一个非常简单的问题要解决。当我刚刚开始使用 RestKit 时,我想确保我以正确的方式做这件事,以避免将来出现问题。您可以提供的任何建议、代码示例、教程等将不胜感激。

4

1 回答 1

3

我建议您在 AppDelegate - (void)applicationDidBecomeActive:(UIApplication *)application- (void)applicationWillEnterForeground:(UIApplication *)application发送旧身份验证令牌的方法中向服务器发出请求。然后,如果令牌有效或无效,服务器可以提供响应。如果您的 AppDelegate 采用 RKObjectLoaderDelegate 协议,那么它可以处理响应。这样,每当应用程序变为活动状态时,都会提示用户在必要时重新进行身份验证。

于 2012-12-14T16:38:23.737 回答