1

我正在用 Ruby-on-Rails 设计一个 API 系统,我希望能够记录查询和验证用户。

但是,我没有传统的登录系统,我想使用 APIkey 和用户可以在请求的 HTTP 标头中提交的签名。(类似于亚马逊的服务工作方式)

而不是请求,/users/12345/photos/create我希望能够请求/photos/create并提交一个标头,X-APIKey: 12345然后使用签名验证请求。

有没有可以适应的宝石?或者更好的是,任何无需适应即可做到这一点的宝石?

还是您觉得让他们使用 POST/GET 变量在每个请求中发送 API 密钥会更明智?

4

1 回答 1

1

您可能已经使用了身份验证库。它可能有一种方法可以覆盖它检查身份验证的方式。最有可能的是,该方法被命名为authenticated?. 不过,请参阅您正在使用的库的文档。

我不会寻找现有的 gem,而是自己实现它;这样做应该不会太难。这是一个示例样板实现:

class ApplicationController < ActionController::Base
  def authenticated?
    current_user.is_a?(User)
  end

  def current_user
    user_from_session || user_from_api_key
  end

  def user_from_session
    # ... use session[:user] or whatever.
  end

  def user_from_api_key
    User.find_by_api_key(request.headers["X-APIKey"])
  end
end

这是我能得到的最具体的信息,因为您没有说明您当前的身份验证设置。

于 2010-05-22T22:14:01.427 回答