Переходя к комментариям так же, как к вопросу, я не уверен, что вам нужно что-то, что выйдет из системы через определенное время, независимо от активности или сразу после периода бездействия.
Если вы счастливы использовать стандартные механизмы ASP.NET , это может быть сделано для вас без какой-либо большой работы:
Настройте поставщика услуг .
Убедитесь, что ваш раздел аутентификации определяет loginUrl:
<authentication mode="Forms">
<forms loginUrl="login.aspx" />
</authentication>
Вы можете установить время ожидания, отличное от 30 минут по умолчанию, используя атрибут "timeout" в элементе форм :
<authentication mode="Forms">
<forms loginUrl="login.aspx" timeout="15"/>
</authentication>
В этом случае пользователь выйдет из системы после 15 минут бездействия на вашем сайте (либо с открытым браузером без «сердцебиения» JavaScript, либо если они проведут 15 минут на другом сайте).
Запретить доступ анонимным пользователям
<authorization>
<deny users="?" />
</authorization>
Затем убедитесь, что страницы входа в систему, регистрации и, возможно, забытого пароля доступны всем пользователям с помощью элемента location:
<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 -->
Таким образом, когда истекает срок действия файла cookie проверки подлинности пользователя, он будет перенаправлен на URL-адрес, указанный в элементе loginUrl на странице форм.
Если вы не используете стандартные механизмы ASP.NET, возможно, вам лучше реализовать модель типа «базовая страница».
Создайте новый класс, унаследованный от System.Web.UI.Page, который будет проверять состояние входа пользователя в систему, а если он не вошел в систему / не истек тайм-аут, затем перенаправить его на страницу входа.
На ваших страницах, которые должны быть заблокированы, вместо того, чтобы наследоваться от System.Web.UI.Page, вы наследуете от базового класса страниц (пример такого рода настройки, чтобы сделать что-то подобное - проверьте настройку на каждой странице) ) можно увидеть в мой ответ тут
Вероятно, на вашей странице входа в систему должен быть какой-то JS с перебором кадров, чтобы выскочить из iFrame:
if (top!=self.parent){
top.location=self.parent.location;
}
Или вы говорите, что, нажав «назад», они все равно могут видеть ваши страницы через кеш браузера? В этом случае вам нужно поиграться с заголовками Cache на каждой странице:
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Хорошо, в таком случае вам также понадобится объект таймера JS для выполнения Location.Replace на вашу страницу входа - поместите его в пользовательский элемент управления на каждой странице (или, что еще лучше, на главной странице), чтобы автоматически перенаправить пользователя через n минут:
<script type="text/javascript">
setTimeout('location.Replace("/login.aspx")', 900000);
</script>
Время указывается в миллисекундах, поэтому они будут перенесены на 15 минут, и для этого не нужно просто использовать всю инфраструктуру jQuery.
Возможно, вы также захотите посмотреть метатег обновления:
<meta http-equiv="refresh" content="900;url=http://example.com/login.aspx" />
Что заставит браузер обновить страницу входа в систему через 15 минут (в секундах).