Ruby使用标头进行身份验证的方法?

时间:2010-05-22 22:03:22

标签: ruby-on-rails ruby authentication rest restful-authentication

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

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

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

有没有可以改编的宝石?或者更好的是,没有适应性的任何宝石?

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

1 个答案:

答案 0 :(得分:1)

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

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

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

这是我可以获得的具体内容,因为您没有说明您当前的身份验证设置。