2009-06-10 12 views
1

Je développe une application ASP.NET MVC et j'ai besoin d'enregistrer l'historique des connexions d'un utilisateur. J'ai besoin de quelque chose de similaire au dernier vu ici dans Stack Overflow (je garderai l'historique, je ne sais pas si SO le fait). Je veux savoir quelle est la meilleure façon de le faire?Enregistrer un utilisateur Se connecter à une application ASP.NET MVC

  • Global.asax: Application_AuthenticateRequest, Application_AuthorizeRequest, Session_Start
  • Site.master

tout autre, Avantages et inconvénients de tout le monde?

Merci

Répondre

1

Je termine le faire:

je mets dans le global.asax dans Session_Start protected void() et dans la routine d'autorisation.

2

Je voudrais tout d'abord créer une table de base de données pour tenir l'historique de connexion. Si vous utilisez le projet de base, alors je passerais à l'action LogOn du AccountController et placerais le code pour écrire un enregistrement dans la table d'historique après la ligne FormsAuth.SignIn.

 if (!ValidateLogOn(userName, password)) 
     { 
      return View(); 
     } 

     FormsAuth.SignIn(userName, rememberMe); 

     //*** Write userName to history table ***** 

     if (!String.IsNullOrEmpty(returnUrl)) 
     { 
      return Redirect(returnUrl); 
     } 
     else 
     { 
      return RedirectToAction("Index", "Home"); 
     } 
2

Les fournisseurs d'appartenance exposent un événement ValidatingPassword. J'en ferais la vérification plutôt que dans le contrôleur. Pour rendre cela encore plus facile, vous pouvez simplement éteindre ce feu WebEvent puis utiliser les fonctionnalités <heartbeat> disponibles dans votre web.config pour capturer l'information plutôt que d'avoir à écrire du code pour gérer cela.

Notez également que, si votre objectif est simplement d'enregistrer des échecs, les connexions échouées sont automatiquement envoyées au journal des événements avec la configuration par défaut.

PS: Il suffit de relire la question. De toute façon vous voulez le porter, Site.Master est le mauvais endroit pour faire quelque chose comme ça. Que se passe-t-il lorsque vous introcédez une deuxième page maître? Ou, restituez au modèle quel est le modèle.