現在、[Authorize(Roles = ".....")] を使用して、ASP.NET MVC 1 アプリでコントローラー アクションを保護していますが、これは正常に機能します。ただし、特定の検索ビューには、検索リストで選択されたレコードと、ログインしているユーザーのセキュリティ権限に基づいて有効/無効にする必要があるこれらのアクションにルーティングするボタンが必要です。
したがって、これらのボタンの状態を判断するために、これらのターゲットコントローラー/アクションをアプリケーションロールと相互参照する DB テーブルにアクセスするクラスが必要だと思います。これは、明らかに、privs を 2 つの場所 (そのクラス/DB テーブルとコントローラー アクション) で維持する必要があるため、面倒になります (さらに、アクションへのアクセスを変更したい場合は、 DB テーブルのエントリを変更するだけでなく、コーディングしてコンパイルする必要があります)。
理想的には、[Authorize] コードでロールを指定する代わりに、ユーザー、コントローラー、およびアクションに基づいてセキュリティ クラスを照会し、ブール値の許可または許可を返すように、[Authorize] 機能を拡張したいと考えています。アクセスを拒否します。これに関する良い記事はありますか - やりたいことが珍しいことだとは想像できませんが、それを行う方法について何かを見つけるのに苦労しているようです (月曜日の朝の脳である可能性があります)。記事http://schotime.net/blog/index.php/2009/02/17/custom-authorization-with-aspnet-mvc/を見て、これを行うコードをいくつか開始しました、それは問題なく開始されているようですが、呼び出し元のコントローラーとアクションの値を httpContext から取得する「正しい」方法が見つかりません。リクエスト URL からそれらを抽出するために少しコードをいじることができますが、それは私には正しくないようで、むしろ適切に行いたいと思います。
乾杯
MH