Geht auf die Kommentare so viel wie die Frage, ich bin mir nicht sicher, ob Sie nach etwas sind, das den Benutzer nach einer bestimmten Zeit unabhängig von Aktivität oder nur nach einer Zeit der Inaktivität protokolliert.
Wenn Sie gerne den Standard ASP.NET mechanisms zu verwenden, kann dies ohne große Arbeit für Sie erledigt werden:
Ihre membership provider einrichten.
Stellen Sie sicher, dass Ihre authentication section eine loginUrl definiert:
<authentication mode="Forms">
<forms loginUrl="login.aspx" />
</authentication>
Sie einen Timeout andere als die Standard 30 Minuten eingestellt können die "timeout" -Attribut auf dem forms element mit:
<authentication mode="Forms">
<forms loginUrl="login.aspx" timeout="15"/>
</authentication>
Dies wird log der Benutzer nach 15 Minuten Inaktivität auf Ihrer Website (entweder mit dem Browser geöffnet ohne Javascript "Herzschlag" oder wenn sie 15 Minuten auf einer anderen Website verbringen).
Verweigern des Zugriffs auf anonyme Benutzer
<authorization>
<deny users="?" />
</authorization>
dann sicher, dass Ihre Login, Registrierung und möglicherweise vergessen Passwort Seiten für alle Benutzer zugänglich sind, um die location 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 verwenden, wenn eine Authentifizierung des Benutzers cookie läuft ab, sie werden an die URL weitergeleitet, die im loginUrl-Element Ihrer Formularseite angegeben ist.
Wenn Sie nicht die Standard-ASP.NET-Mechanismen verwenden, dann würden Sie wahrscheinlich besser dran, ein „Basis Seite“ Typ-Modell zu implementieren.
Erstellen Sie eine neue Klasse, die von System.Web.UI.Page erbt, die den Anmeldestatus des Benutzers überprüft, und wenn sie nicht angemeldet sind/Zeitüberschreitung, dann leiten Sie sie auf Ihre Anmeldeseite um.
In den Seiten, die gesperrt werden sollen, statt von System.Web.UI.Page zu erben, erben Sie von Ihrer Basis-Seitenklasse (ein Beispiel für diese Art von Setup, etwas Ähnliches zu tun) Seite) in my answer here
Ihre Login-Seite zu sehen sein wird wahrscheinlich müssen einige Rahmen spreng JS in ihm haben aus dem iFrame zu springen zurück:
if (top!=self.parent){
top.location=self.parent.location;
}
Oder sagen Sie, dass Sie durch Drücken von "Zurück" Ihre Seiten immer noch durch den Cache des Browsers sehen können? In diesem Fall müssen Sie auf jeder Seite mit den Cache-Header herum spielen werden:
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Ok, gut, in diesem Fall müssen Sie auch ein JS-Timer-Objekt einen Ort auszuführen. ersetzen Sie auf Ihre Login-Seite - hat dies in einer Benutzersteuerung auf jeder Seite (oder besser noch, in der Masterseite), um den Benutzer automatisch nach n Minuten zu umleiten:
<script type="text/javascript">
setTimeout('location.Replace("/login.aspx")', 900000);
</script>
die Zeit in Millisekunden, so dass dies Verschieben Sie sie in 15 Minuten und brauchen Sie nicht das gesamte jQuery-Framework dafür einzurichten.
Sie könnten auch in den Meta-Refresh-Tag aussehen sollen:
<meta http-equiv="refresh" content="900;url=http://example.com/login.aspx" />
, die den Browser auf die Login-Seite nach 15 Minuten zu aktualisieren zwingen werden (dies ist in Sekunden). Dies wurde durch die folgende Weise erreicht
Sie sollten dies als die Antwort markieren, um Leute zu sparen, die Zeit damit verbringen –