rails-аутентификация api по токену заголовка

Я хотел бы работать с rails-api gem special для создания приложения только для API. Для обеспечения механизма аутентификации я хочу использовать встроенный authenticate_or_request_with_http_token метод, описанный в Railscasts #352, но этот метод здесь отсутствует.

У кого-нибудь есть опыт работы с on rails-api камень?

P. S. Я вижу этот подход, но готова ли эта продукция?

2 ответов


Я нахожусь в процессе разработки сервиса с использованием rails-api. Мы еще не развернуты, но приближаемся к этому времени, и у нас не было никаких проблем при тестировании. Вам нужно включить любые несущественные модули, которые вы хотите использовать, так как rails-api обрезается прямо вниз. Я использую authenticate_or_request_with_http_token в ApplicationController следующим образом:

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

с README:

Basic, Digest и Token Authentication: Rails поставляется с поддержкой из коробки для трех видов аутентификации HTTP.

Итак, да, это производство готово (это все-таки рельсы). Пример, на который вы ссылаетесь, - это путь (трюк состоит в том, чтобы включить только то, что вам нужно из пакета действий).