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

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

Есть ли у кого-нибудь опыт работы с rails-api gem?

P.S. Я вижу этот подход, но готово ли это готово?

Ответы

Ответ 1

Я занимаюсь разработкой службы с помощью 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

Ответ 2

Из README:

Базовый, дайджест и аутентификация Token: Rails поставляется с готовой поддержкой для трех видов аутентификации HTTP.

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