2013-07-23 3 views
0

Я разрабатываю API с Rails 4, и я пытаюсь аутентифицировать пользователей. У каждого пользователя есть уникальная api_key, и я хочу, чтобы они использовали его, передав его через HTTP-заголовок или через параметры.Как аутентифицировать пользователей через HTTP-заголовок или через параметры

Я использую метод authenticate_or_request_with_http_token, предоставляемый Rails.

Я пытался что-то вроде этого, но она не работает, когда я прохожу через api_key Params:

authenticate_or_request_with_http_token do |token, options| 
    User.exists?(api_key: token) or User.exists?(api_key: params[:api_key]) 
end 

Любая идея?

ответ

3

Хорошо, я понял ответ на мой вопрос. Согласно документу http://api.rubyonrails.org/classes/ActionController/HttpAuthentication/Token.html для аутентификации HTTP-заголовка, если никакой токен не найден вообще, он возвращает nil. Таким образом, тест на params не будет выполнен вообще.

Итак, я проверяю параметры перед заголовком HTTP и позволяю authenticate_or_request_with_http_token обрабатывать несанкционированный ответ 401.

unless User.exists?(api_key: params[:api_key]) 
    authenticate_or_request_with_http_token do |token, options| 
    User.exists?(api_key: token) 
    end 
end 
Смежные вопросы