iphone - 使用用户 token 、rest/rails 和钥匙串(keychain)帮助进行 iOS 身份验证

标签 iphone ruby-on-rails objective-c ios

我有一个 Rails 应用程序(我知道这无关紧要),我想根据 Rails 应用程序对 iOS 应用程序进行身份验证,并保留身份验证,这样以后对 Rails API 的请求就可以工作,而无需重新对每个请求进行身份验证。从概念上讲,这就是我想要做的......不过我不确定这是否是最好的方法。

好的,所以在我的 Rails 应用程序中,每个用户都有一个唯一的 token (SHA1 哈希)。我在想第一次加载 iPhone 应用程序时,用户会看到用户名/密码屏幕。他们会输入 Rails 应用程序的凭据,在成功验证后,Rails 应用程序会返回他们唯一的用户 token ,然后可以将其存储在钥匙串(keychain)中?从那时起,我想我可以简单地将用户 token 附加到所有 API 请求,这就是我可以在 Rails 应用程序中验证用户的方式。这也将使用户名/密码独立于 iPhone 应用程序(因此用户可以在 Rails 应用程序中更改他们的用户名/密码,但 iPhone 应用程序不会关心这一点,因为它会使用他们的 token ,这不会改变).

我认为我的 URL 请求可能看起来像这样:

http://example.com/api/v1/[whatever].json?token=XXXXXXXXXXXXXXX

这听起来像是一种合理的方法吗?还是我不知道他们对这种方法的担忧?我从事 Rails 工作已经很长时间了,但我对 iOS 还比较陌生(我只有 1 个应用,而且它不需要任何身份验证)。

如果这是一个好的方法,使用钥匙串(keychain)会不会很困难?我想我读过模拟器和设备本身不支持用于钥匙串(keychain)访问的相同 API? (或者模拟器可能不支持模拟钥匙串(keychain)访问)

提前致谢。我尝试搜索较早的帖子,但似乎没有一个能回答我的具体情况。

最佳答案

我们已经在 iOS 与 Rails 应用程序连接时使用了这种方法,没有遇到任何问题。在你的 api Controller 中,只需要一个前置过滤器,它根据你的 token 找到你的用户,如果无效则返回 401。

然后,您的移动设备知道它是否收到 401,然后显示登录屏幕以获取新的/有效的 token 。将其放入连接工厂,您就可以开始了。

如果您想保持 URL 干净,您也可以将它添加到标题中,但我对 URL 参数方法没有任何问题。

关于iphone - 使用用户 token 、rest/rails 和钥匙串(keychain)帮助进行 iOS 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4479802/

相关文章:

css - 更改 $primary-color 以在 Rails 6 元素中实现

ruby-on-rails - 如何在生产模式下修复 Rails 的布线错误?

iphone - 简单 iPhone 应用程序启动时的 EXC_BAD_ACCESS

c - iphone:如果 float 为负数,则转换为无符号整数的 float 将设置为 0?

ios - 展开 UILabel 文本

iphone - 为什么在创建 UIWebView 时清除 NSUserDefaults 会导致 EXC_CRASH?

css - 部署到 Heroku 后未加载更新的 CSS 样式表?

ios - 区域监控当前位置不在退出时通知

ios - 在 iOS 7 中预加载数据库

ios - 首先调用哪种dealloc方法?