Я использую SimpleMembership в своем проекте .NET MVC4. Во время разработки, при ручном манипулировании/восстановлении базы данных, я столкнулся с ошибкой, которая маловероятна в рабочей среде, но я хочу решить эту проблему и не могу найти изящный способ справиться с ней.
Если после входа в приложение ваше имя пользователя будет изменено в базе данных или ваша запись о пользователе будет полностью удалена, пользователь больше не сможет получить доступ ни к одной странице приложения... включая общедоступные страницы, которые разрешают анонимные просмотры, и экран входа в систему. Вместо этого выдается исключение - «Не найден ни один пользователь с именем «имя пользователя»».
Все страницы в моем приложении отображают частичное представление, которое отображает элемент управления входом/выходом из системы. Request.IsAuthenticated возвращает значение true независимо от того, что находится в базе данных. Кажется, приложение считает, что пользователь все еще вошел в систему на основе информации в файле cookie, но в базе данных не может быть найдена соответствующая запись. Очистка файла cookie авторизации решает эту проблему, но это не инструкция, которую я хотел бы предоставить пользователю, который может столкнуться с этим.
Мое текущее решение состоит в том, чтобы поймать это исключение в Global.asax, очистить файлы cookie и перенаправить на страницу входа. Это просто кажется мне совершенно хакерским.
У кого-нибудь есть лучшее решение для этого сценария? Я никогда не сталкивался с подобными проблемами при использовании старого поставщика членства в .NET... я ожидаю, что эта ситуация должна быть рассмотрена прямо из коробки, и мне не нужно отчитываться за это... если запись изменена /deleted в БД, пользователь должен просто не пройти авторизацию и автоматически перенаправиться на страницу входа.