У меня есть веб-приложение ASP.NET MVC2, которое использует сессии InProc для хранения идентификатора пользователя, вошедшего в систему. В контроллерах я использую пользовательский атрибут AuthorizeAttribute для проверки правильности идентификатора сеанса.
Я также использую TempData в своих контроллерах после GET-> POST-> REDIRECT для отображения подтверждающих сообщений. Например, когда пользователь выходит из системы, действие контроллера Logout () очищает сеанс, устанавливает TempData ["Message"] и перенаправляет на действие Login (). Действие Login () затем отображает любые TempData ["Message"], которые не равны NULL.
TempData["Message"] = "You have successfully logged out.";
Мой вопрос (наконец-то) следующий. Я хотел бы иметь возможность перенаправить пользователя на действие Login (), если время сеанса истекло, в отличие от выхода пользователя из системы.
TempData["Message"] = "You have been logged out due to inactivity.";
Я не уверен, подходит ли 1) использование коллекции TempData в этом сценарии или 2) где подходящее место для обработки этого было бы.
Я бы хотел как можно больше придерживаться рекомендаций / рекомендаций MVC, поэтому кажется, что использование Session_End каким-то уродливым способом - это не тот способ, которым я хотел бы пойти. Я также хотел бы избежать передачи? Timeout = true в строке запроса.
Есть мысли?