Я ответил на другой вопрос, который имел проблему с прерыванием сеанса, когда пользователь редактировал файл web.config на работающем сайте. Они отслеживали пользователей, которые все еще входили в систему с переменными сеанса (опасно). Но придумали решение (непроверенное решение), которое могло бы помочь людям здесь.
FormsAuthentication позволяет поддерживать активность человека и войти в него на неопределенный срок. Но если они становятся неактивными, например, Через 20 минут они выйдут из системы, что приятно. Но выйти из них во время закрытия их браузера невозможно (дождитесь его ...), так как установка значения времени ожидания 0 приведет к их постоянному входу и выходу из системы.
Итак, решение: во время входа пользователя в систему с помощью FormsAuthentication вы также можете установить стандартный файл cookie переменной сеанса, который будет удален при закрытии браузера. Этот файл cookie содержит неидентифицирующую информацию, не связанную с учетной записью. Просто "залогинен: да".
Теперь весь ваш код должен быть на главной странице / materlayout - это высокоуровневый вызов в цикле страницы или конструктор цикла страницы (или даже пользовательский атрибут), который проверял бы и cookie, и идентификацию пользователя:
if(!HasLoginCookie() || !System.Web.HttpContext.Current.User.Identity.IsAuthenticated)
{
// redirect user to log in page.
}
Обычно, если cookie удаляется при закрытии браузера, вы перенаправляете пользователя на страницу входа.
Надеюсь, что это помогает (и работает. Как я уже говорил, не проверено).