2010-06-29 10 views
0

Lorsqu'un utilisateur se connecte à dans mon site, j'ai un fournisseur d'appartenances personnalisé qui remplace ValidateUser et vérifie que l'utilisateur dispose de droits suffisants, etc..Net fournisseur d'adhésion, valider l'utilisateur lors de la connexion à travers un cookie persistant

Cependant, la mise en œuvre d'une fonction « remember me » à travers les formulaires par défaut en utilisant l'authentification RememberMeSet, je veux aussi valider un utilisateur sur la première demande.

Est-il un crochet je peux attacher à qui déclenche lorsqu'un utilisateur se connecte avec son cookie persistant?

Répondre

0

Solution:

  1. Avez une variable de session comme UserIsVerified ou quelque chose
  2. Définissez cette variable à true lors de la connexion par le loginPage par défaut (ou par authentification unique, etc.)
  3. Créer la méthode Application_PreRequestHandlerExecute dans global.asax où vous vérifiez si le prop UserIsVerified a été défini et si ce n'est pas le cas: effectuez les vérifications appropriées

Pourquoi Application_PreRequestHandlerExecute?

Sur PreRequest session et à la fois le profil sont disponibles. .Net a déjà interprété le cookie persistant, et donc toutes les informations que vous pouvez éventuellement vouloir sont là. Vous pouvez également effectuer une redirection lorsque la vérification de l'utilisateur échoue car nous sommes dans le cycle de la demande. Cela arrive aussi juste avant que n'importe quel code d'utilisateur soit exécuté, ainsi, il est tout à fait sûr de le faire ici pour éviter de telles actions.

Si l'authentification échoue dans le gestionnaire, je redirige vers la page de fermeture de session et laissez .Net prendre soin de tout le reste.

0

Je pense que ce que vous cherchez est l'événement AuthenticateRequest dans un HttpModule. Dans ce gestionnaire d'événements, vous pouvez vérifier le cookie et valider les informations d'identification, puis définir HttpContext.Current.User pour autoriser l'utilisateur.

+0

Pas vraiment. Je ne veux pas faire de cookie lu par moi-même comme. Net peut gérer tout cela. –

2

Tout ce que vous devez faire est d'appeler Membership.GetUser() qui renvoie le MembershipUser instance de l'utilisateur actuellement connecté. Si votre utilisateur s'est connecté avec "Se souvenir de moi" la dernière fois en provoquant une authentification persistante. cookie sur le client, Your MembershipProvider vous indiquera automatiquement si l'utilisateur est connecté [à partir d'un cookie persistant]. Aucun effort supplémentaire n'est requis pour authentifier un utilisateur à partir d'un cookie d'authentification persistante.

Vous pouvez travailler votre crochet supplémentaire sur MembershipUser instance retourné par la méthode Membership.GetUser() et vérifiez s'il est autorisé à effectuer la tâche. Si l'utilisateur n'est pas connecté, la méthode renvoie simplement null.