基本的な.NETメンバーシップサービスが配置されたサブスクリプションベースのMVC 2アプリケーションがあります(アカウント/サブスクリプションなどを管理するためのカスタムコンポーネントの下)。アカウントが失効したユーザー、またはアカウントを手動で停止したユーザーは、アカウントのステータスを管理するシステムで単一のビューにアクセスできる必要があります。そのビューを駆動するコントローラーは、[Authorize] 属性を使用して保護されます。
ユーザーがアカウントを再度有効にするまで、システム内の他のビューにアクセスできないようにしたいと考えています。基本コントローラー (保護されているすべてのコントローラーが派生する) で、OnActionExecuting メソッドを変更して、アクションをインターセプトし、停止されたアカウントを確認し、停止されている場合は、アカウントの状態を管理する単一のビューにリダイレクトしようとしました。しかし、これは私を無限ループに陥らせます。新しいアクションがヒットすると、OnActionExecuting が再度呼び出され、サイクルが続行されます。
[Authorize] 属性を拡張したくはありませんが、必要に応じて拡張できます。
コントローラーレベルでこれを行う方法について他に何か考えはありますか?
EDIT:ベースコントローラーでは、filterContext.Resultプロパティを変更して、問題のビューのRedirectToAction結果に設定することにより、リダイレクト(その後リダイレクトループを作成した)を管理していました。ループが発生するたびに、filterContext.Result == null に気付きました。おそらく、filterContext の別の部分をチェックする必要がありますか?