Я пытаюсь использовать Devise для аутентификации API на стороне сервера. В мой контроллер, я использую код прямо из вики DEViSE для того, как использовать HTTP базовой аутентификации ...Неопределенный метод 'authenticate_with_http_basic' в Rails 4.2
before_filter :check_auth, only: [:show]
и
def check_auth
authenticate_or_request_with_http_basic do |username,password|
resource = User.find_by_email(username)
if resource.valid_password?(password)
sign_in :user, resource
end
end
end
Когда я иду к намеченной URL, я ожидать ошибки 401 Несанкционированное JSON, однако, вместо этого я получаю следующее сообщение об ошибке:
undefined method `authenticate_or_request_with_http_basic' for #<V1::ItemsController:0x007fb6b3d79120>
Я не понимаю, почему этот метод не будет определен. Я использую RubyMine и ссылки IDE прямо к коду для этого метода, но по какой-то причине что-то не так. Может ли кто-нибудь помочь мне выяснить, что я делаю неправильно?
ОБНОВЛЕНИЕ: Я смог идентифицировать свою проблему. Я использую Rails-API против полных Rails, поэтому модуль для HttpAuthentication (на удивление) не включен.
Добавляя:
include ActionController::HttpAuthentication::Basic::ControllerMethods
к моему ApplicationController, он теперь работает как задумано.