2010-06-01 6 views

Répondre

0

Utilisez la fonction Session_End() dans votre fichier global.asax. S'il vous plaît voir ici pour plus d'informations

SO - Session End

EDIT: Non, ça ne va pas probablement. Voir les commentaires ci-dessous.

Si vous devez rediriger l'expiration d'une session, est-ce que quelque chose comme cela vous convient?

private void Page_Load(object sender, System.EventArgs e) 
{ 

Response.AddHeader(“Refresh”,Convert.ToString((Session.Timeout * 60) + 5)); 
if(Session[“IsUserValid”].ToString()==””) 
Server.Transfer(“Relogin.aspx”); 

} 

EDIT 2: Attention, cela peut être difficile si vous utilisez AJAX.

J'ai vu des exemples où les gens vont mettre cela dans le page_load d'une page de base et dans l'esprit de toutes vos pages .aspx à partir de cette page de base. Cela vous évite d'avoir à ajouter ce code pour chaque page que vous avez.

Pourquoi la première méthode ne fonctionnera-t-elle pas (Session_End)? C'est une fonction appelée en interne sur le serveur quand une session se termine. En tant que tel, il n'y a pas de demande/réponse associée à la redirection ou au transfert. Par exemple, cette fonction peut être appelée par le serveur 20 minutes après la fermeture du navigateur.

+1

Session_End est pour le nettoyage des variables de session pour ne pas Réorientation utilisateur à une autre page. – Amitabh

+0

@Amitabh je pense qu'il veut dire la fonction dans le global.aspx – Steven

+1

Non, il a raison, mon mauvais. Mise à jour post avec une autre solution – Tommy

1

Je suppose que vous devez implémenter la vérification de session sur un groupe de pages de votre site, donc un bon moyen de le faire est de déclarer une classe de base pour toutes vos pages "d'accès restreint". Quelque chose comme:

public class BasePage : System.Web.UI.Page 
{ 
    protected override void OnInit(EventArgs e) 
    { 
     base.OnInit(e); 

     if (Session["Context"] == null) 
     { 
      // do redirect 
     } 
    } 
} 

en supposant que, lors de la connexion, vous assignez un objet représentant la session à [ "Contexte"]

Vos pages hériteront cette classe comme:

public partial class _Default : BasePage { ... } 
0

Vous pouvez vérifier la propriété HttpContext.Current.User.Identity.IsAuthenticated qui vous permettra de savoir s'il y a un utilisateur actuellement authentifié ou non.

ainsi de suite ur chargement de la page

if (!HttpContext.Current.User.Identity.IsAuthenticated) 
      { 
       //FormsAuthentication.RedirectToLoginPage(); 
       Response.Redirect("~/Login.aspx"); 
      } 
Questions connexes