RestKit - 处理身份验证

时间:2012-12-12 21:30:06

标签: ios web-services rest authentication restkit

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

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

想象一下这个场景......

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

理想情况下,我们希望能够识别服务器已指示需要身份验证,然后再次弹出模式视图控制器。但是,RestKit是否支持这一点?有没有办法让我们注册一个能够识别出服务器响应的“全局响应处理程序”?

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

很抱歉,如果这没有意义,或者这是一个非常简单的问题需要解决。由于我刚刚开始使用RestKit,我想确保我这样做是正确的,以避免将来出现问题。您可以提供的任何建议,代码示例,教程等都将非常感激。

1 个答案:

答案 0 :(得分:3)

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