Сессия истекает и пользователь больше не действителен - PullRequest
0 голосов
/ 04 августа 2010

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

Как мне справиться с этим сценарием?

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

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

Ответы [ 2 ]

1 голос
/ 04 августа 2010

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

0 голосов
/ 04 августа 2010

Бросьте исключение из GetUser (), если вы собираетесь вернуть ноль. Затем вы можете получить событие Application_Error, которое перехватит это конкретное исключение и перенаправит на вашу страницу входа.

...