2010-09-21 6 views
0

J'utilise l'authentification par formulaire dans un projet ASP.NET MVC.L'authentification par formulaire La méthode IsOnline ne récupère pas l'état correct

Lorsque l'utilisateur clique en cours sur la sortie lier le code execute une action qui fait en séquence:

System.Web.Security.FormsAuthentication.SignOut(); 
Session.Abandon(); 

Le deuxième appel est mal nécessaire parce que je ne suis pas du tout en utilisant la session.

Le problème est que si je me connecte avec un compte Admin, je peux voir l'utilisateur toujours connecté.

Où est-ce que je fais mal?

merci de votre aide!

EDIT:

Ajouté le code de connexion juste pour être complet

if (ModelState.IsValid) { 
    if (MembershipService.ValidateUser(model.UserName, model.Password)) { 
     System.Web.Security.FormsAuthentication.SignIn(model.UserName, model.RememberMe); 
     if (!String.IsNullOrEmpty(returnUrl)) { 
      return Redirect(returnUrl); 
     } 
     else { 
      return RedirectToAction("Index", "Home"); 
     } 
    } 
    else { 
     ModelState.AddModelError("", "Error...."); 
    } 
} 

Répondre

0

Ok. J'ai trouvé le problème.

j'utilisais, pour montrer les utilisateurs actuels loggein l'appel suivant

MembershipUser utilisateur = Membership.GetUser (USERKEY, true) si (user.IsOnline) { ...}

et j'ai réalisé que le deuxième paramètre de la méthode GetUser définit l'état de l'utilisateur sur en ligne et met à jour le champ LastActivity dans le magasin de données. Je ne sais pas pourquoi cela fonctionne de cette façon mais c'est tout ...