MVC: залогинен, но нет сессий? - PullRequest
1 голос
/ 04 февраля 2011

Я использую Chrome в качестве браузера отладки.

Когда я запускаю свой веб-сайт MVC (Razor), нажимаю кнопку остановки, и веб-сайт продолжает работать в Chrome, пока я могу вносить изменения в VS ... идеально.

Но иногда (из-за того, что я не знаю, что изменится), когда я обновляю страницу, я все еще вхожу в систему, но теряю все свои сеансовые переменные.поймать, очищены ли сеансовые переменные, чтобы я мог вернуть своих пользователей на страницу входа?(Мне нужен метод global.asax page_request kinde.

У меня есть .. <forms loginUrl="~/Account/LogOn" timeout="2880" /> ... но я не вышел из системы - очищаются только переменные сессии.

Ответы [ 3 ]

2 голосов
/ 10 мая 2011

Это потому, что ваше состояние входа сохраняется в файле cookie клиента. Состояние сеанса сохраняется на сервере в памяти (или как угодно). Когда ваше приложение перезапускает сеанс, он очищается, но у пользователя все еще есть действительный токен аутентификации форм (при условии аутентификации форм здесь) на его компьютере. Проверка подлинности с помощью форм по умолчанию не использует сессию.

Таким образом, в начале запроса вы можете либо перезагрузить сеанс пользователя из базы данных, когда он пуст (я думаю, что это предпочтительный подход, если это возможно), либо перенаправить пользователя на экран входа в систему с сообщением «ooops извините, мы потеряли ваш сеанс "(что нехорошо!)

0 голосов
/ 10 мая 2011

Ли Ганн объяснил это хорошо.Одним из решений будет создание пользовательского атрибута фильтра, аналогичного Authorize, который проверяет, что сеанс имеет ожидаемые значения, и украшает соответствующие контроллеры / действия.

0 голосов
/ 10 мая 2011

Если вы используете встроенную функцию авторизации, вы можете просто добавить атрибут [Authorize].Здесь есть некоторая информация об использовании пользовательской аутентификации:

ASP.NET MVC Authorization

...