Я хочу создать пользовательскую стратегию аутентификации для доступа к API. Я следовал примеру кода в Devise, игнорируя пользовательскую стратегию .
Проблема в том, что действительный? метод в моей стратегии API никогда не запускается (из-за попытки взломать его ).
Мой код:
module Devise
module Strategies
class Api < Devise::Strategies::Base
def valid?
binding.pry
params[:request_source] == 'api'
end
def authenticate!
#do stuff here
if user
success!(user)
else
warden.custom_failure!
render :json=> {:success=>false, :message=>"Error with your login or password"}, :status=>401
end
end
end
Warden::Strategies.add(:api, Devise::Strategies::Api)
end
end
и в инициализаторе устройства:
config.warden do |manager|
manager.default_strategies.unshift :api
end
Что бы я ни делал, Devise всегда использует стратегию по умолчанию. На мой взгляд, этого должно быть достаточно...
-------РЕДАКТИРОВАТЬ--------
Мне нужна такая стратегия в самом верху моего инициализатора разработки:
require Rails.root.join('app/devise/strategies/api')
Я знаю, что стратегия загружается во время загрузки, так как если я поставлю вызов pry внутри класса, он запустит сеанс pry. Но вызовы Pry внутри методов никогда не запускаются. :-С