.NETMVC4プロジェクトでSimpleMembershipを使用しています。開発中に、データベースを手動で操作/再構築しているときに、本番環境では起こりそうもないエラーに遭遇しましたが、これを解決したいので、適切な処理方法を見つけることができません。
アプリケーションにログインした後、データベースでユーザー名が変更された場合、またはユーザーレコードが完全に削除された場合、ユーザーはアプリケーションのどのページにもアクセスできなくなります...匿名ビューを許可する公開ページを含むログイン画面。代わりに、例外がスローされます-「'username'という名前のユーザーが見つかりませんでした」。
私のアプリケーションのすべてのページは、ログイン/ログオフコントロールをレンダリングする部分的なビューを表示します。Request.IsAuthenticatedは、データベースの内容に関係なくtrueを返します。アプリは、Cookie内の情報に基づいてユーザーがまだログインしていると見なしているようですが、対応するレコードがデータベースに見つかりません。認証Cookieをクリアするとこれは解決しますが、これは、これを経験している可能性のあるユーザーに提供したい指示ではありません。
私の現在の解決策は、Global.asaxでその例外をキャッチし、Cookieをクリアして、ログインページにリダイレクトすることです。これは私には完全にハッキーに思えます。
誰かがこのシナリオに対するより良い解決策を持っていますか?古い.NETメンバーシッププロバイダーを使用してこのような問題に遭遇したことはありません...この状況は箱から出してすぐにカバーされるべきであり、それを説明する必要はないはずです...レコードが変更された場合DBで/deletedされた場合、ユーザーは認証に失敗し、自動的にログインページにリダイレクトされます。