【问题标题】:Rails 3 and iOS Architecture ReviewRails 3 和 iOS 架构评论
【发布时间】:2011-12-04 12:08:21
【问题描述】:

我的目标是构建一个独立的 RESTful Rails 3 服务,该服务通过 ActiveResource JSON 与 Rails 3 Web 应用程序通信,并通过 iOS 5 本机 JSON 与 iPhone 应用程序通信。我让每一个都运行,以便在服务应用程序中公开一个数据表,并且可以通过 Rails 应用程序和 iPhone 应用程序调用和呈现。

我的问题是关于身份验证,以及可以为 Web 应用程序和 iPhone 应用程序或将来的 Android 应用程序重复使用的东西。

根据我在这个网站上所做的研究,似乎 HTTP Basic 对两者都适用,但是我无法像会话或 cookie 一样在 Web 端正确注销用户,并且我有浏览器登录表单来处理和。如果我使用会话,这将如何转化为在 iOS 端设置身份验证?

这个项目是一个代码学习练习,所以我希望得到实现或架构指导,而不是简单地实现 Devise 或 Authlogic 等。

【问题讨论】:

    标签: ruby-on-rails ruby ios authentication architecture


    【解决方案1】:

    听起来你至少混淆了两个问题。

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

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

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

    我认为,获得所需内容的唯一方法是为您的网络用户提供基于表单的身份验证(允许他们注销并以其他人身份登录),以及一个基本的 - iOS 用户的基于身份验证的系统。作为两种身份验证机制的结果,返回一个必须用于所有其他页面的 cookie。

    【讨论】:

    • 感谢 Xaxxon。当您说“您可能需要考虑需要基本身份验证的登录页面”时,您的意思是在执行 HTTP Basic 时使用内置的浏览器登录表单还是有办法创建自定义登录表单,但将值传递给标题因此永远不会看到浏览器登录表单?
    • 有两种获取票的方式。一种方法是为您的 iOS 客户端使用基本身份验证来获取他们的会话 cookie,而另一种页面使用表单身份验证,您的传统网络用户将使用它来获取他们的会话 cookie。
    猜你喜欢
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多