0

Я кеширую информацию о текущем входе пользователя в сеанс. Эта информация ленится, когда используется свойство CurrentUser в моем глобальном классе приложений. Он делает это, вызывая GetUser() в моей пользовательской реализации MemberhipProvider, которая либо загружает пользователя из сеанса, либо загружает пользователя из БД и бросает пользовательский объект в сеансе.Сессия завершена, и пользователь больше не действителен

Как я должен обрабатывать этот сценарий? журналы

  1. пользователя в.
  2. Администратор удаляет пользователя (или деактивирует ... дело в том, они не могут войти больше).
  3. Сессия пользователя заканчивается.
  4. Пользователь переходит на страницу или делает запрос или что-то еще.

В настоящее время при возникновении такой сценарий, NullReferenceExceptions выбрасываются повсюду, потому что рамки ASP .NET вызывает GetUser(), который ничего не возвращает, потому что он не может найти пользователя в базе данных (и нет ничего в потому что он истек).

ответ

1

Если ваше приложение считает, что пользователь зарегистрирован, но пользователь не может быть найден, одним из вариантов может быть использование FormsAuthentication.SignOut(), чтобы заставить ASP.NET забыть о пользователе. Затем их следует отбросить на экран входа в систему или анонимный режим.

0

Выбросить исключение из GetUser(), если вы собираетесь вернуть null. Тогда у вас может быть ловушка событий Application_Error, которая является особым исключением и перенаправляется на вашу страницу входа.

 Смежные вопросы

  • Нет связанных вопросов^_^