Question


A) Le livre que j’apprends dit que si nous gérons l’événement Login.Authenticate , nous devons authentifier nous-mêmes les utilisateurs. Ainsi, le contrôle ne validera pas automatiquement le nom d’utilisateur et le mot de passe. Je pensais que le livre suggérait que cela ne se produirait que si nous remplacions la méthode Login.OnAuthenticate () , mais il semble que même si nous ajoutons seulement un gestionnaire d'événements pour l'événement Authenticate , l'authentification automatique n'arrive pas

Mais pourquoi est-ce? Pourquoi la gestion des événements ne fonctionne-t-elle pas comme avec les événements Init ou Load , dans lesquels vous devez essentiellement remplacer Page.OnInit () et < em> Page.OnLoad () afin de prendre le contrôle de la gestion des événements?


B) J'ai vérifié le site MSDN et il recommande en principe que si nous substituons Login.OnAuthenticate () , nous devrions également appeler base.OnAuthenticate () . Mais alors, pourquoi aurions-nous jamais besoin de remplacer Login.OnAuthenticate () , si nous obtenons le même effet en déclarant simplement un gestionnaire d’événements pour Login.Authenticate ?

>


merci

Était-ce utile?

La solution

Vous ne devez pas remplacer < code> OnAuthenticate . Cette méthode est uniquement utilisée en interne pour générer le Authentifier auprès des gestionnaires enregistrés, ou s'authentifier via le MembershipProvider actuel s'il n'y a pas de gestionnaires enregistrés. Ainsi, pour implémenter une authentification personnalisée pour le contrôle Login , vous devez simplement enregistrer un gestionnaire pour l'événement Authenticate et définir le AuthenticateEventArgs.Authenticated propriété.

La gestion des événements pour l'événement Authenticate fonctionne exactement de la même manière que pour les autres événements. La seule différence est que la méthode OnAuthenticate a une logique qui détermine s'il faut utiliser un MembershipProvider ou un gestionnaire d'événements enregistré pour l'authentification.

Si vous créez une sous-classe de Login et remplacez Login.OnAuthenticate , il est recommandé d'appeler base.OnAuthenticate (...) car il contient la logique qui appelle les gestionnaires d’événements enregistrés. Si vous n'appelez pas base.Authenticate (...) , vous devez appeler vous-même les gestionnaires d'événements enregistrés. Toutefois, la création d’une sous-classe de Login n’est probablement pas nécessaire dans votre cas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top