Voglio creare una strategia di autenticazione personalizzata per accedere all'API. Ho seguito il codice di esempio allo Devise ignoring custom strategy.Devise ignora la mia strategia personalizzata
Il problema è che il valido? il metodo nella mia strategia Api non viene mai eseguito (basato sul tentativo di fare leva in esso).
Il mio codice:
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
e nel inizializzatore devise:
config.warden do |manager|
manager.default_strategies.unshift :api
end
cosa io faccia, sembra che Devise usa sempre la sua strategia di default. Per quanto ne so, questo dovrebbe essere sufficiente ...
------- -------- EDIT
Richiedo la strategia come questa in cima alla mia disposizione testamentaria inizializzatore:
So che la strategia viene caricata al momento dell'avvio poiché se inserisco una chiamata di richiamo all'interno della classe, inizierà una sessione di leva. Ma le chiamate di Pry all'interno dei metodi non vengono mai eseguite. : -S
Ho questa riga nella parte superiore dell'inizializzatore di inizializzazione: richiede Rails.root.join ('app/idea/strategie/api ') e se aggiungo una chiamata di richiamo all'interno della strategia, questa viene caricata all'avvio dell'applicazione rails. MA tutte le chiamate di leva che ho dentro il valido? il metodo non viene mai chiamato. – Alain