.NET MVC4プロジェクトでSimpleMembershipを使用しています。開発中に、手動でデータベースを操作/再構築している間に、私は生産上では起こりそうなエラーに遭遇しましたが、これを解決したいと思います。.NET MVC4 SimpleMembershipエラー - 「xxxという名前のユーザーが見つかりません」
アプリケーションにログインした後、ユーザー名がデータベース内で変更された場合、またはユーザーレコードが完全に削除された場合、ユーザーはアプリケーションの任意のページにアクセスできなくなります。匿名のビュー、およびログイン画面が表示されます。その代わり、例外がスローされます。「ユーザー名が 'username'」のユーザーが見つかりませんでした。
私のアプリケーションのすべてのページは、ログイン/ログオフコントロールをレンダリングする部分的な表示を表示します。 Request.IsAuthenticatedは、データベースの内容にかかわらずtrueを返します。アプリはCookieの情報に基づいてユーザーがログインしていると考えているようだが、データベースに対応するレコードは見つからない。認証クッキーをクリアするとこれが解決されますが、これはユーザーにこれを体験してもらいたいという指示ではありません。
私の現在の解決策は、Global.asaxでその例外を捕捉し、クッキーをクリアし、ログインページにリダイレクトすることです。これはちょうど私に完全にハッキーなようです。
このシナリオでは誰かがより良い解決策を得ていますか?私は以前の.NETメンバーシッププロバイダを使用してこのような問題に遭遇したことはありません...私の期待は、この状況がボックスの外からすぐにカバーされるべきだということです。レコードが変更された場合/ DB内で削除された場合、ユーザーは認証に失敗し、自動的にログインページにリダイレクトされるはずです。
は、まあ、私はまだそれを想像します実稼働環境では、データベース内のレコードを手動で削除しないため、発生しない可能性があります。ホストを切り替えるのは問題ではありません。私はこれを克服する方法を見つけようともっと多くの時間を費やしたわけではありませんが、基本的にはデータベース内に存在しなくなったユーザーを参照するブラウザの認証クッキーと関係があります。より優雅に箱から。 – Gadget27