Frage

Ich habe Auto-Logout-Funktionalität in einem meiner Projekte zu implementieren und ich, wo einfach nicht herausfinden, für Ideen beginnen, aber SO .

Was ich brauche, ist für die Anwendung der Benutzer auf die Login-Seite umgeleitet werden, wenn die Benutzersitzung abgelaufen ist.  Bitte sagen Sie mir, was soll mein Ansatz sein, um diese Anforderung zu bewältigen.

Problemstellung: Wenn der Benutzer das System für mehr als n Minuten in einer bestimmten Login-Instanz verläßt, sollte das System sie automatisch abmeldet.

War es hilfreich?

Lösung 2

Dies wird durch die folgende Weise erreicht:

1) Speichern Sie die Zeitstempel von jeder Anfrage (Server und Ajax mit Ausnahme der Sitzung Prüfung Ajax-Request) an den Server in einer Sitzung var.

2) poll den Server über eine JS Funktion ajax in häufigen Intervallen und überprüfen, ob die Zeit diff zwischen dem Sitzungszeitstempel und der ajax Anforderungszeit größer ist als die session timeout val dann Abmelde die aktuellen Benutzer und Rückkehr ein Bool für die ajax-Anforderung.

3) Leiten Sie die aktuelle Seite zur Anmeldeseite, wenn die bool true zurückgegeben wird.

Andere Tipps

zu den Kommentaren gehen so viel wie die Frage, ich bin nicht sicher, ob Sie nach etwas sind, das den Benutzer aus nach einer gewissen Zeit unabhängig von der Aktivität, oder einfach nur nach einer gewissen Zeit der Inaktivität loggt.

Wenn Sie gerne den Standard ASP.NET Mechanismen rel="nofollow , kann dies ohne große Arbeit für Sie erledigt werden:

Stellen Sie Ihr Mitgliedschaft Anbieter rel="nofollow.

Stellen Sie sicher, dass Ihre Authentifizierungs-Abschnitt rel="nofollow eine loginUrl definiert:

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

Sie einen Timeout anders als der Standard einstellen 30 Minuten mit dem "timeout" Attribut für das bildet Element :

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

Dies wird den Benutzer aus nach 15 Minuten Inaktivität auf Ihrer Website anmelden (entweder mit dem Browser geöffnet ohne javascript „Herzschlag“ oder wenn sie verbringen 15 Minuten auf einer anderen Website).

Verweigern des Zugriffs auf anonyme Benutzer

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

Sie dann sicher, dass Ihre Login, Registrierung und möglicherweise vergessen Passwort Seiten für alle Benutzer zugänglich sind mit der Lage Element:

<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 -->

Auf diese Weise, wenn ein Authentifizierungs-Cookie des Nutzers abläuft werden sie auf die im loginUrl Elemente Ihrer Formular Seite angegebenen URL umgeleitet werden.


Wenn Sie nicht die Standard-ASP.NET-Mechanismen verwenden, dann würden Sie wahrscheinlich ein „Basis-Seite“ Typ-Modell besser dran zu implementieren.

Erstellen

eine neue Klasse, die von System.Web.UI.Page erbt, die den Login-Status des Benutzers überprüft, und wenn sie nicht eingeloggt sind / abgelaufen dann leiten Sie sie auf Ihre Login-Seite.

Sie Seiten, die gesperrt wird nach unten, sondern von System.Web.UI.Page vererben, die Sie von Ihrer Basisseitenklasse erben (ein Beispiel für diese Art von Einrichtung ähnlich, etwas zu tun - überprüfen Sie auf jeder Seite einstellen ) sind hier zu sehen in meine Antwort


Ihre Login-Seite wird wahrscheinlich müssen einige Rahmen in ihm haben Zerschlagung JS wieder aus dem iFrame zu springen:

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

Oder sagen Sie, dass durch „zurück“ drücken sie noch Ihren Seiten durch den Browser-Cache sehen? In diesem Fall müssen Sie den Cache-Header auf jeder Seite herum spielen werden:

Response.Cache.SetCacheability(HttpCacheability.NoCache);

Ok, gut, in diesem Fall werden Sie auch ein Timer-Objekt JS brauchen eine Location.Replace auf Ihre Login-Seite auszuführen - habe dies in einer Benutzersteuerung auf jeder Seite (oder besser noch, in Ihrer Master-Seite) automatisch umleiten den Benutzer nach n Minuten:

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

Es ist in Millisekunden, so dass dies wird sie in 15 Minuten weitergehen, und keine Notwendigkeit, den gesamten jQuery Framework an seinem Platz zu bekommen nur das.

Sie können auch in den Meta-Refresh-Tag aussehen sollen:

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

Welche wird den Browser zwingen, die Login-Seite nach 15 Minuten (dies ist in Sekunden) zu aktualisieren.

Da Sie nicht wissen, wo Sie anfangen sollen, können Sie diese 4guys Artikel nützlich: http://www.4guysfromrolla.com/webtech/110701-1.shtml

Bearbeiten

Klingt wie der jQuery Timer kann nützlich sein, wenn Sie auf eine URL umleiten möchten nach eine bekannte Zeitspanne verstrichen ist (dh die Sitzung Ablauf Periode).

Hope, das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top