我有一个 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/