【发布时间】:2013-08-01 02:59:13
【问题描述】:
我已经对此进行了很长时间的研究,但未能解决我的问题,所以我想我会问。我已经在 stackoverflow 和其他文章上搜索了其他问题,但它们似乎并没有让我朝着正确的方向前进。
这就是我想要做的。我有一个 Rails 3 应用程序,它只提供 JSON 格式的数据。数据将仅由 1 位用户输入,因此对其的访问将非常有限。我正在使用设计,以便通过身份验证对其进行保护。
我还有一个 iPhone 应用程序可以访问这些数据。由于 Rails 3 应用程序具有用户名/密码保护,iPhone 应用程序需要一种方法来向应用程序进行身份验证。
我在 Devise 中查看了令牌身份验证,但似乎无法使其正常工作。我有一个加载符号,它只是旋转并且不返回任何数据。我还查看了 http 基本身份验证。再次,没有任何运气。在 iPhone 端,我使用 ASIHTTPRequest。以下是我用于通过真实性令牌发布的内容:
//the url variable below is defined in my code but I did not paste that part
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:@"auth token" forKey:@"authenticity_token"];
[request addRequestHeader:@"Content-Type" value:@"application/json"];
[request setDelegate:self];
[request startAsynchronous];
当我尝试 http 基本身份验证时,我传递了一个用户名和密码,但在同样的问题上效果不佳,并且没有返回数据。我确定我遗漏了一些东西,但我找不到我需要的信息来完成这项工作。我看了看 RestKit,但它似乎比我需要的要多得多。
我只需要 iPhone 应用程序访问在 Rails 3 端受到保护的 JSON 数据。 iPhone 用户无需通过登录表单登录,也无需创建、更新或删除任何数据。它是严格只读的。谁能把我推向正确的方向?
【问题讨论】:
-
您是否在 Rails 端使用设计?
-
是的,我在导轨一侧使用设计。
-
如果 API 是严格只读的(对于 show、index 等方法),为什么需要身份验证?您可以在控制器中指定仅对破坏性方法进行身份验证,例如创建/更新/销毁。如果您需要来自移动客户端的身份验证,我可以指导您使用设计提供的简单令牌身份验证。
-
哈桑,谢谢。我忘了在控制器中指定仅对破坏性方法进行身份验证。我想对从移动客户端读取数据进行身份验证的原因是限制对我的 iphone 应用程序的访问。它只是列出事件,所以它不是任何人真正想要的。如果您确实有设计提供的简单令牌身份验证指南以及 iphone 应用程序如何使用它,那就太好了。正如您从我上面的代码中看到的那样,我之前已经尝试过。我在设计中设置了 token_authenticable 并传递了一个真实性令牌。
标签: iphone ios ruby-on-rails devise restkit