Временное решение:
- Иметь переменную сеанса, например
UserIsVerified
или что-то
- Установите эту переменную на
true
при входе через страницу входа по умолчанию (или через единый вход и т. Д.)
- Создайте метод
Application_PreRequestHandlerExecute
в global.asax, где вы проверяете, была ли установлена опора UserIsVerified
, а если нет: выполните соответствующие проверки
Почему Application_PreRequestHandlerExecute?
В PreRequest доступны как сеанс, так и профиль. .Net уже интерпретировал постоянный файл cookie, и поэтому любая информация, которую вы можете получить, находится там. Вы также можете выполнить перенаправление, когда проверка пользователя завершится неудачно, так как мы находимся в цикле запросов. Это также происходит прямо перед выполнением любого пользовательского кода, поэтому на самом деле это вполне безопасно, чтобы предотвратить подобные действия.
Если в обработчике происходит сбой аутентификации, я перенаправляю на страницу выхода и позволяю .Net позаботиться обо всем остальном.