RestKit - 处理身份验证
Posted
技术标签:
【中文标题】RestKit - 处理身份验证【英文标题】:RestKit - Handling authentication 【发布时间】:2012-12-12 21:30:06 【问题描述】:我已经开始为我们将要开发的利用基于 REST 的 Web 服务(在 Java 中使用 restEASY 实现)的 ios 应用程序进行概念验证。我将使用 RestKit 作为我的客户端服务库,并且一直在阅读文档和一些示例。
绝大多数服务都要求用户使用用户名和密码进行身份验证。我们有接受包含凭证的 JSON 对象的身份验证服务,因此这部分很容易。我的问题是,当服务说需要身份验证时,我们如何处理 iOS 部分?
想象一下这个场景......
用户启动我们的应用程序并识别出用户需要进行身份验证。弹出一个模态视图控制器,提示用户进行身份验证,并提交请求。然后,用户可以毫无问题地进行一堆 REST 调用。最终,他们关掉了手机(应用程序仍然处于活动状态)并在一个小时左右后回来使用。他们单击一个按钮来触发另一个 REST 调用,但此时服务器端会话已过期。
理想情况下,我们希望能够识别服务器已指示需要身份验证,并再次弹出模态视图控制器。但是,RestKit 对此有支持吗?我们有什么方法可以注册一个“全局响应处理程序”,它能够识别服务器已经以这种方式响应了吗?
我们可以返回 JSON 中的状态代码或使用 HTTP 状态代码。我们的服务具有灵活性。真正的问题是如何在客户端以理想的方式处理这个问题。而且,一旦我们重新验证了用户的身份,有没有办法重放他们最初尝试提交的请求?或者,他们是否必须重新开始行动?
抱歉,如果这没有意义,或者这是一个很容易解决的问题。由于我刚刚开始使用 RestKit,所以我想确保我以正确的方式进行操作,以避免将来出现问题。您可以提供的任何建议、代码示例、教程等将不胜感激。
【问题讨论】:
【参考方案1】:我建议您在 AppDelegate 中向服务器发出请求
- (void)applicationDidBecomeActive:(UIApplication *)application
或
- (void)applicationWillEnterForeground:(UIApplication *)application
发送旧身份验证令牌的方法。然后,如果令牌有效或无效,服务器可以提供响应。
如果您的 AppDelegate 采用 RKObjectLoaderDelegate 协议,那么它可以处理响应。这样,每当应用程序处于活动状态时,都会提示用户在必要时重新进行身份验证。
【讨论】:
以上是关于RestKit - 处理身份验证的主要内容,如果未能解决你的问题,请参考以下文章