Тайм-аут сеанса ASP.NET MVC и TempData - PullRequest
3 голосов
/ 15 сентября 2010

У меня есть веб-приложение 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 в строке запроса.

Есть мысли?

1 Ответ

1 голос
/ 16 сентября 2010

Вы ничего не можете сделать на сервере, когда сеанс истекает, потому что браузер не подключен к серверу все время.

Я бы создал функцию javascript, которая обновляет страницу через некоторое время после периода сеансаистек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...