Вот сценарий:
У меня есть страница входа, когда пользователь подписывает ее, она перенаправляется на домашнюю страницу приложения. Затем пользователь использует кнопку назад, и теперь он находится на странице входа. Он пытается снова войти в систему, но теперь вызывается исключение:
HttpAntiForgeryException (0x80004005): предоставленный токен анти-подделки предназначался для пользователя ", но текущий пользователь является" userName".
Я знаю, что это связано с кешированием. Я отключил кеширование браузера для действия входа с использованием настраиваемого фильтра NoCache, который устанавливает все необходимые заголовки - no-cache, no-store, must-revalidate и т.д. Но
- это не работает во всех браузерах
- особенно Safari (в большинстве случаев, мобильная) полностью игнорирует такие настройки
Я попытаюсь сделать хаки и принудительно обновить сафари, но это не то, что я ожидаю.
Я хотел бы знать, могу ли я:
- обрабатывать исключение, не показывая, что у пользователя существует какая-либо проблема (полностью прозрачная для пользователя)
- предотвратить эту проблему, заменив имя пользователя токена анти-подделки, что позволит снова войти в систему без этого исключения, если мои хаки, связанные с кешированием браузера, перестанут работать в следующих версиях браузеров.
- Я действительно не хочу полагаться на поведение браузера, так как каждый ведет себя по-другому.
ОБНОВЛЕНИЕ 1
Чтобы сделать некоторые пояснения, я знаю, как обрабатывать ошибки в MVC. Проблема в том, что эта ошибка обработки не решает мою проблему вообще. Основная идея обработки ошибок - перенаправление на страницу пользовательских ошибок с хорошим сообщением. Но я хочу предотвратить эту ошибку, чтобы не обрабатывать ее видимым пользователем. Под рукояткой я имею в виду catch make username replace или другое подходящее действие, а затем продолжить вход в систему.
ОБНОВЛЕНИЕ 2
Я добавил ниже решение, которое работает для меня.