rph*_*ath 17 iphone ruby-on-rails objective-c ios
我有一个Rails应用程序(不相关,我知道),我想针对Rails应用程序验证iOS应用程序,并保持身份验证,以便将来对Rails API的请求工作,而无需重新验证每个请求.从概念上讲,这就是我想要做的......但我不确定这是否是最佳方法.
好吧,所以在我的Rails应用程序中,每个用户都有一个唯一的令牌(SHA1哈希).我在想第一次加载iPhone应用程序时,用户会看到用户名/密码屏幕.他们输入了Rails应用程序的凭据,并且在成功进行身份验证后,Rails应用程序将返回其唯一的用户令牌,然后可以将其存储在钥匙串中?从那以后,我想我可以简单地将用户令牌附加到所有API请求,这就是我如何在Rails应用程序中验证用户.这也可以保持用户名/密码独立于iPhone应用程序(因此用户可以在Rails应用程序中更改其用户名/密码,但iPhone应用程序不会关心它,因为它将使用他们的令牌,这不会改变).
我以为我的URL请求看起来像这样:
http://example.com/api/v1/[whatever].json?token=XXXXXXXXXXXXXXX
Run Code Online (Sandbox Code Playgroud)
这听起来像是一种合理的方法吗?或者他们的担忧我不知道这种方法?我一直在做Rails工作很长一段时间,但我对iOS比较陌生(我只有1个应用程序,它不需要任何身份验证).
如果这是一个很好的方法,是否难以使用钥匙串?我想我读过模拟器和设备本身不支持用于钥匙串访问的相同API?(或者模拟器可能不支持模拟钥匙串访问)
提前致谢.我尝试搜索较旧的帖子,但似乎没有人回答我的具体情况.
我们使用这种方法与iOS连接Rails应用程序,并没有任何问题.在您的api控制器中,只需要一个基于您的令牌找到您的用户的前置过滤器,如果它无效则返回401.
然后,您的移动设备知道它是否收到401,然后显示登录屏幕以获取新的/有效的令牌.把它放在一个连接工厂,你会很高兴.
如果你想保持URL干净,你也可以将它添加到标题中,但我对URL参数方法没有任何问题.