MVC Вход пользователя и сессии - PullRequest
1 голос
/ 10 января 2011

Мое веб-приложение требует, чтобы пользователь вошел в систему для просмотра любой веб-страницы на нем.

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

Я предполагаю, что происходит, что FormsAuthentication.SetAuthCookie(userName, createPersistentCookie); запоминает, что пользователь вошел в системуно мои сеансы не обновляются.

Как мне перехватить этот сценарий и соответственно обновить мои сеансы?

Ответы [ 2 ]

2 голосов
/ 10 января 2011

Есть много способов сделать это.

Во-первых, вы можете выбрать, а не сохранять cookie.Но это все равно вызовет исключение, если сессия еще не истекла, и вы перекомпилируете свой проект.Перекомпиляция проекта разрушает состояние сеанса.

Хотя перевод пароля в состояние сеанса не является предпочтительным способом решения этой проблемы, я уверен, что у вас будет веская причина сделать это таким образом.

Однако, если вы хотите сделать это таким образом, вы можете переопределить событие Application_AuthenticateRequest в Global.asax.Это событие срабатывает каждый раз, когда поступает запрос, и вы можете проверить, аутентифицирован ли запрос (используя HttpContext.Current.User.Identity.IsAuthenticated), и повторно заполнить состояние сеанса.

Кстати, можете ли вы объяснить, почемувам нужно хранить пароль пользователя в состоянии сеанса?

0 голосов
/ 10 января 2011

Если я правильно понял проблему, вы можете использовать базовый класс действий и переместить туда механизм аутентификации. Так что для каждого запроса будет вызываться эта база, чтобы вы могли убедиться, что механизм аутентификации не пропущен.

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