2011-12-04 34 views
1

我的目标是构建独立的RESTful Rails 3服务,通过iOS 5本地JSON通过ActiveResource JSON和iPhone应用程序与Rails 3 Web应用程序进行通信。我每次运行都会在服务应用程序中显示单个数据表,并且可以通过Rails应用程序和iPhone应用程序调用和呈现。Rails 3和iOS体系结构回顾

我的问题是身份验证和一些可以重复使用的Web应用程序和iPhone应用程序或未来的Android应用程序。

从我在这个网站上做的研究看来,HTTP Basic可以同时工作,但是我将无法正确地注销网络端的用户,如会话或cookie,我可以使用浏览器登录表单处理。如果我使用会话,那么这将如何转化为在iOS上设置身份验证?

这个项目是学习锻炼的代码,所以我希望能实现或建筑指导,而不是简单地实现设计或Authlogic等

回答

1

这听起来像你混为一谈至少存在两个问题。

第一个问题是身份验证:您需要确定用户是否是他们所说的人。对于身份验证,您可以执行基本身份验证。你也可以使用客户端证书,虽然这可能不是你想要的。

第二件事是会话管理:首先,您可以对每个页面请求执行基本身份验证,并将会话状态存储在数据库中,但是您无法将用户注销,因为浏览器会缓存凭证。

您可能需要考虑一个需要基本身份验证的登录页面,并拍摄一个cookie来进行会话管理。所有其他页面不需要基本身份验证,但如果Cookie不存在,则授予401未经授权。或者你可以重定向。 iOS客户端代码必须知道先调用登录页面才能获取cookie,然后再使用它。注销将删除Cookie .. hrmm,但浏览器仍将缓存基本认证凭证。

我在想你要得到你想要的唯一方法就是为你的web用户提供一个基于表单的认证(允许他们注销并以别人身份登录)以及一个基本的适用于iOS用户的基于系统的系统。作为两种认证机制的结果,返回必须用于所有其他页面的cookie。

+0

谢谢Xaxxon。当你说“你可能想考虑一个需要基本身份验证的登录页面”时,你的意思是在使用HTTP Basic时使用内置的浏览器登录表单,还是有办法创建自定义登录表单,但是将值从而从头看不到浏览器登录表单? – textbox

+0

有两种方式获得票。一种使用基本身份验证为您的iOS客户端获取其会话cookie的另一种方式,以及另一种使用表单身份验证的网页,您的传统网络用户将使用它来获取其会话Cookie。 – xaxxon