Gestione dell'evento Login.Authenticate
-
03-07-2019 - |
Domanda
A) Il libro I & # 8217; m learning from dice che se gestiamo l'evento Login.Authenticate , allora dobbiamo autenticare gli utenti da soli. Pertanto il controllo non convaliderà automaticamente nome utente e password. Pensavo che il libro suggerisse che ciò sarebbe accaduto solo se avessimo ignorato il metodo Login.OnAuthenticate () , ma sembra che anche se si aggiunge solo un gestore eventi per l'evento Authenticate , l'autenticazione automatica non succede.
Ma perché? Perché la gestione degli eventi non funziona come accade con gli eventi Init o Carica , in cui devi essenzialmente sostituire Page.OnInit () e Page.OnLoad () per ottenere il controllo sulla gestione degli eventi?
B) Ho controllato il sito MSDN e in pratica mi consiglia di sostituire Login.OnAuthenticate () , dovremmo anche chiamare base.OnAuthenticate () . Ma allora, perché dovremmo mai avere bisogno di sostituire Login.OnAuthenticate () , se otteniamo lo stesso effetto con la semplice dichiarazione di un gestore eventi per Login.Authenticate ?
Grazie
Soluzione
Non devi ignorare < code> OnAuthenticate . Questo metodo viene utilizzato solo internamente per aumentare Autentica
ai gestori registrati se presenti o autentica tramite l'attuale MembershipProvider
se non ci sono gestori registrati. Pertanto, per implementare l'autenticazione personalizzata per il controllo Login
, è sufficiente registrare un gestore per l'evento Authenticate
e impostare AuthenticateEventArgs.Authenticated
.
La gestione degli eventi per l'evento Authenticate
funziona esattamente come per altri eventi. L'unica differenza è che il metodo OnAuthenticate
ha una logica che determina se utilizzare un MembershipProvider
o un gestore di eventi registrato per l'autenticazione.
Se si crea una sottoclasse di Login
e si ignora Login.OnAuthenticate
, è consigliabile chiamare base.OnAuthenticate (...)
perché contiene la logica che chiama i gestori di eventi registrati. Se non si chiama base.Authenticate (...)
, è necessario chiamare personalmente i gestori di eventi registrati. Ma la creazione di una sottoclasse di Login
probabilmente non è necessaria nella tua situazione.