Question

Je dois implémenter la fonctionnalité auto-déconnexion dans l'un de mes projets et je ne peux pas tout simplement la figure où commencer à chercher des idées, mais SO .

Qu'est-ce que j'ai besoin est pour l'application de rediriger l'utilisateur vers la page de connexion si la session utilisateur a expiré.  S'il vous plaît me dire ce que devrait être mon approche pour faire face à cette exigence.

Énoncé du problème: Si l'utilisateur quitte le système pendant plus de n minutes dans une instance de log-in donné, le système doit les enregistrer automatiquement.

Était-ce utile?

La solution 2

Ceci a été réalisé par la manière suivante:

1) Enregistrez le horodater de chaque demande (serveur et ajax exclusion de la vérification session de demande de paiement ajax) au serveur dans une session var.

2) interroge le serveur via une fonction JS en utilisant ajax à intervalles réguliers et vérifier si le temps diff entre la session horodatage et le temps de demande ajax est supérieure à la temporisation session de val puis connectez-l'utilisateur actuel et le retour un bool pour cette demande ajax.

3) Rediriger la page en cours à la page de connexion si le bool retourné est vrai.

Autres conseils

Voulez-vous profiter des commentaires autant que la question, je ne sais pas si vous êtes après quelque chose qui va se connecter à l'utilisateur après un certain temps, quelle que soit l'activité, ou juste après une période d'inactivité.

Si vous êtes heureux d'utiliser la norme de ASP.NET , cela peut être fait pour vous sans aucun travail majeur:

Configurer votre .

Assurez-vous que votre définit un loginUrl:

<authentication mode="Forms">
  <forms loginUrl="login.aspx" />
</authentication>

Vous pouvez définir un délai d'attente autre que la valeur par défaut de 30 minutes en utilisant l'attribut « délai d'attente » sur le forme élément :

<authentication mode="Forms">
  <forms loginUrl="login.aspx" timeout="15"/>
</authentication>

consignera l'utilisateur après 15 minutes d'inactivité sur votre site (soit avec le navigateur ouvert sans javascript « battement de coeur » ou si elles passent 15 minutes sur un autre site).

Refuser l'accès aux utilisateurs anonymes

<authorization>
  <deny users="?" />
</authorization>

Assurez-vous ensuite que votre connexion, l'enregistrement et les pages de mot de passe peut-être oubliées sont atteignables à tous les utilisateurs en utilisant le emplacement élément:

<location path="Logon.aspx">
  <system.web>
    <authorization>
      <allow users="?"/>
    </authorization>
  </system.web>
</location>
<location path="Register.aspx">
  <system.web>
    <authorization>
      <allow users="?"/>
    </authorization>
  </system.web>
</location>
<!-- etc -->

De cette façon, lorsque le cookie d'authentification d'un utilisateur expire, ils seront redirigés vers l'URL spécifiée dans l'élément loginUrl de votre page formes.


Si vous n'êtes pas en utilisant les mécanismes ASP.NET standard, alors vous seriez probablement mieux mettre en œuvre un modèle de type « page de base ».

Créer une nouvelle classe qui hérite de System.Web.UI.Page qui va vérifier l'état de connexion de l'utilisateur, et si elles ne sont pas connectés / expiré puis les rediriger vers votre page de connexion.

Dans les pages qui vous doivent être verrouillés, au lieu d'hériter de System.Web.UI.Page, vous héritez de votre classe de page de base (un exemple de ce genre de configuration pour faire quelque chose de similaire - vérifier le réglage sur chaque page ) peut être vu dans ma réponse ici


Votre page de connexion sera probablement besoin d'avoir un cadre busting JS en elle pour revenir en arrière sur l'iFrame:

if (top!=self.parent){
  top.location=self.parent.location;
}

Vous dites que en appuyant sur « retour » ils peuvent encore voir vos pages dans le cache des navigateurs? Dans ce cas, vous devez être jouer avec les en-têtes de cache sur chaque page:

Response.Cache.SetCacheability(HttpCacheability.NoCache);

Ok, bien, dans ce cas, vous aurez également besoin d'un objet timer JS pour effectuer une location.replace sur votre page de connexion - cette dans un contrôle utilisateur sur chaque page (ou mieux encore, dans votre page maître) à rediriger automatiquement l'utilisateur après n minutes:

<script type="text/javascript">
  setTimeout('location.Replace("/login.aspx")', 900000);
</script>

Le temps est en millisecondes, donc cela les passer en 15 minutes, et pas besoin d'obtenir l'ensemble du cadre jQuery en place juste pour cela.

Vous pouvez également regarder dans la balise meta refresh:

<meta http-equiv="refresh" content="900;url=http://example.com/login.aspx" />

Ce qui forcera le navigateur pour rafraîchir la page de connexion après 15 minutes (celui-ci est en secondes).

Puisque vous ne savez pas où commencer, vous pouvez trouver ce 4guys article utile: http://www.4guysfromrolla.com/webtech/110701-1.shtml

Modifier

Sons comme le timer jQuery peut être utile si vous souhaitez rediriger vers une url après une période de temps connue est écoulé (votre session de période d'expiration).

Hope this helps.

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