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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top