通过标头令牌进行rails-api认证

时间:2012-06-13 14:41:50

标签: ruby-on-rails authentication rails-api

我想使用 rails-api gem special来创建仅限API的应用程序。为了提供身份验证机制,我想使用Railscasts #352中描述的内置 authenticate_or_request_with_http_token 方法,但此方法在此处缺失。

有没有人有 rails-api gem的经验?

P.S。我可以看到this approach,但这是生产就绪的吗?

2 个答案:

答案 0 :(得分:47)

我正在使用rails-api开发服务。我们尚未部署,但即将到来,并且在测试中没有任何问题。您需要包含要使用的任何非必要模块,因为rails-api会向下修剪。我在ApplicationController中使用authenticate_or_request_with_http_token,如下所示:

include ActionController::HttpAuthentication::Token::ControllerMethods

def authenticate
  authenticate_or_request_with_http_token do |token, options|
    apiKey = ApiKey.where(auth_token: token).first
    @current_user = apiKey.user if apiKey
  end
end 

如果你只想要令牌,有一个方便的方法token_and_options:

include ActionController::HttpAuthentication::Token

def current_user
  api_key = ApiKey.where(auth_token: token_and_options(request)).first
  User.find(api_key.user_id) if api_key
end

答案 1 :(得分:2)

来自README

  

基本,摘要和令牌认证:Rails带有对三种HTTP认证的开箱即用支持。

所以,是的,这是生产就绪(毕竟它仍然是Rails)。您链接的示例是要采用的方法(诀窍是仅包含Action Pack所需的内容)。