Столкновение сессионной проблемы в приложении MVC - PullRequest
0 голосов
/ 01 октября 2011

Я использую членство в Asp.Net, и когда пользователь вводит правильное имя пользователя и пароль, я регистрирую его, используя:

FormsAuthentication.SetAuthCookie(String, Boolean)

Если я создаю постоянный файл cookie, то я думаю, что мое членство все еще сможет работатьно мои данные сеанса будут нулевыми.

Это действительно раздражает и вызывает много ошибок в моем приложении.Как я могу справиться с этим?

Должен ли я обрабатывать global.asax Application_AuthenticateRequest и проверять, является ли userId, который я храню в сеансе, нулевым, а Membership.GetUser() не нулевым, тогда я должен снова сохранить ProviderUserKey (Guid) в сеансе.

Это разумный подход или есть лучший способ справиться с этим?

Ответы [ 3 ]

2 голосов
/ 01 октября 2011

Вы должны сконфигурировать сеанс и время жизни authcookie в файле web.config.См .:

<forms timeout="5" />

<sessionState timeout="5" />

Формы используются для аутентификации, и по истечении этого времени пользователь выходит из системы.Вы можете «предотвратить» тайм-аут, установив для свойства SlidingExpiration значение «true», и при необходимости он обновит тикет форм на активность пользователя (запрос на чтение в asp).Это позволит пользователю войти в систему, пока он «активен» на вашем сайте.

и

По истечении времени сеанса вы потеряете данные, найденные в объекте сеанса.*

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


См. Также Q *

1 голос
/ 01 октября 2011

сессий и authcookies разные. Время жизни authcookies может быть установлено в forms timeout="5" config-section, а время жизни сессии должно быть установлено в sessionState timeout="5" config-section. Возможно, что файл cookie аутентификации еще сохраняется, но сеанс истекает. Проверьте это.

0 голосов
/ 01 октября 2011

Я думаю, вам нужно использовать для него сессию вместо cookie.И по моему мнению, это не должно быть предпочтительным, чтобы сохранить ProviderUserKey в сеансе или в любом другом месте.Используйте global.asax (Application_AuthenticateRequest) для проверки подлинности и на основе этого идентификатора получите ProviderUserKey из БД.

Надеюсь, мой комментарий полезен для вас.

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