Przechodząc do komentarzy tak samo jak do pytania, nie jestem pewien, czy szukasz czegoś, co wyloguje użytkownika po pewnym czasie, niezależnie od aktywności, lub tuż po okresie bezczynności.
Jeśli jesteś zadowolony używać standardowego ASP.NET mechanisms, można to zrobić za ciebie bez większych prac:
Skonfiguruj membership provider.
upewnić się, że authentication section definiuje loginUrl:
<authentication mode="Forms">
<forms loginUrl="login.aspx" />
</authentication>
Można ustawić limit czasu innego niż domyślne 30 minut przy użyciu "timeout" atrybut na forms element:
<authentication mode="Forms">
<forms loginUrl="login.aspx" timeout="15"/>
</authentication>
Będzie logowaniu użytkownik po 15 minutach bezczynności w witrynie (przy otwartej przeglądarce bez "pulsu" javascript lub jeśli spędzają 15 minut w innej witrynie).
Odmowa dostępu do anonimowych użytkowników
<authorization>
<deny users="?" />
</authorization>
Następnie upewnić się, że Twój login, rejestracja i ewentualnie zapomniane stron hasło są accessable dla wszystkich użytkowników za pomocą 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 -->
ten sposób, gdy uwierzytelnianie użytkownika ciasteczko wygasa, zostanie przekierowane na adres URL podany w elemencie loginUrl na stronie formularzy.
Jeśli nie używasz standardowych mechanizmów ASP.NET, prawdopodobnie lepiej byłoby zaimplementować model typu "strona bazowa".
Utwórz nową klasę dziedziczącą po System.Web.UI.Page, która sprawdzi stan logowania użytkownika, a jeśli nie są zalogowani/przekroczono limit czasu, przekieruj ich na stronę logowania.
Na twoich stronach, które mają zostać zablokowane, zamiast dziedziczyć z System.Web.UI.Page, dziedziczysz z klasy strony głównej (przykład tego rodzaju konfiguracji, aby zrobić coś podobnego - sprawdź ustawienia na każdym z nich strona) może być postrzegane w my answer here
Twojej strony logowania będzie prawdopodobnie trzeba mieć jakieś ramy krach JS w niej wskoczyć z powrotem z iFrame:
if (top!=self.parent){
top.location=self.parent.location;
}
Czy mówisz, że naciskając "wstecz", nadal będą widzieć twoje strony przez pamięć podręczną przeglądarki? W takim przypadku trzeba być zabawy z nagłówkami Cache na każdej stronie:
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Ok, dobrze, w takim razie będziesz również potrzebował obiekt Timer JS wykonać gości. Wymienić na stronę logowania - mają to w kontroli użytkownika na każdej stronie (albo jeszcze lepiej, na stronie głównej), aby automatycznie przekierować użytkownika po n minut:
<script type="text/javascript">
setTimeout('location.Replace("/login.aspx")', 900000);
</script>
czas jest w milisekundach, więc wolę przenieś je za 15 minut i nie ma potrzeby instalowania całego środowiska jQuery w tym celu.
Można również zajrzeć do meta tag odświeżania:
<meta http-equiv="refresh" content="900;url=http://example.com/login.aspx" />
które zmusi przeglądarkę do odświeżenia do strony logowania po 15 minutach (w tym jeden jest w sekundach).
Powinieneś oznaczyć to jako odpowiedź, aby oszczędzić ludzi spędzających na nim czas –