我迷失在这里 - 甚至不知道要问什么问题。
我按照此处所述构建了一个api:http://railscasts.com/episodes/350-rest-api-versioning?view=asciicast
它位于需要登录的网站上。
我登录时可以通过浏览器访问api,没问题。这是我的路线:
## API
namespace :api do
namespace :v1 do
resources :users, :sessions
end
end
我被要求做的是让外面的一方可以使用Api密钥和可选的查询参数以及userId来请求json
我尝试卷曲网站(https)并重定向到注销,即使使用用户名和密码也是如此。
我的老板建议根网址上的公共表单接受userId,apikey和params,并且可以卷曲并通过curl发布的参数返回数据。
我不知道如何做到这一点,甚至不允许在没有登录的情况下调用数据。我查看了另一个屏幕投射http://railscasts.com/episodes/353-oauth-with-doorkeeper(这是一个付费版本),但他的交互允许另一个轨道应用程序与他的原始应用程序进行交互。
基本上,我应该在哪里寻找有关如何实现这一目标的信息?我可以提出任何其他建议或更多信息以使我的问题更清楚?
感谢您的时间。
答案 0 :(得分:0)
更多RailsCasts! Ryan Bates让您了解http://railscasts.com/episodes/352-securing-an-api?view=asciicast
所以要把它煮熟:
某些API允许调用者作为查询的一部分传递API密钥;其他人需要更复杂的身份验证过程,通常是OAuth,这有点棘手。
某些API提供特定于用户的信息,在这种情况下,您需要一种方法来确保用户可以登录,更改密码,调用忘记的密码等。这也有一个很好的RailsCast(或者你可以使用Devise gem,但如果你主要实现一个API而不是Devise的强项,我不会推荐它。)
我猜您知道这一部分,但所有curl
都会模拟您的客户将对您的API发出的HTTP请求,并且(使用--include
选项)可以显示有关的信息返回的响应 - 标题,cookie等。
Google“rails api authentication”了解更多信息。