0

我在这里迷路了——甚至不知道要问什么问题。

我按照此处所述构建了一个 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)并被重定向到注销,即使使用用户名和密码也是如此。

我的老板建议在根 url 上使用一个公共表单,该表单接受 userId、apikey 和 params,并且可以卷曲,并将通过 curl 发布的参数返回数据。

我不知道如何做到这一点,甚至不知道允许在不登录的情况下调用数据。我查看了另一个屏幕截图http://railscasts.com/episodes/353-oauth-with-doorkeeper(这是付费的版本)但他的交互允许另一个 Rails 应用程序与他的原始应用程序交互。

基本上,我应该在哪里查找有关如何完成此操作的信息?我可以提供任何其他建议或更多信息以使我的问题更清楚吗?

感谢您的时间。

4

1 回答 1

0

更多 RailsCast!瑞安贝茨在http://railscasts.com/episodes/352-securing-an-api?view=asciicast

所以归结为:

  • 您需要确定调用您的 API 的客户端是否需要标识自己,或者他们是否还需要以某种方式进行身份验证
  • 您需要确定客户端的用户(即调用您的 API)是否需要通过您的系统进行身份验证——也就是说,是否有“用户”?

一些 API 允许调用者将 API 密钥作为查询的一部分传递;其他人需要更复杂的身份验证过程,通常是 OAuth,这有点棘手。

一些 API 提供用户特定的信息,在这种情况下,您需要一种方法来确保用户可以登录、更改密码、找回忘记的密码等。也有一个很好的 RailsCast (或者你可以使用 Devise gem,虽然如果你主要实现一个 API,我不会推荐它 - 不是 Devise 的强项)。

我猜您知道这部分,但curl所做的只是模拟您的客户端将对您的 API 发出的 HTTP 请求,并且(使用--include选项)可以向您显示有关返回的响应的信息——标头、cookie 等。

谷歌“rails api authentication”了解更多信息。

于 2012-12-05T22:34:21.037 回答