3

私はMVCを初めて使用し、ASP.NET MVC 4を使用してアプリケーションを開発しています。認証には、ドメイン内のActive DirectoryでWindows認証を使用しています。次のステップは、(メンバーシップを使用せずに) ユーザーを承認することです。いくつかの記事を読みましたが、まだ良いアプローチを見つけています。

私は独自の 3 つのデータベース テーブル ( UsersRolesUserRoles) を持っており、いくつかの管理者レベルで承認されたユーザーを維持しています。それは多対多です。たとえば、「管理者」(作成権限を持つシステムへのフル アクセス)、「データ オペレーター」(セクションのみの更新権限)、「サポート ユーザー」(読み取り専用/表示専用アクセス) が存在する場合があります。これは多対多であるため、ユーザーは「サポート ユーザー」であると同時に「データ入力オペレーター」でもあります。

特定のセクションでは、メソッドに基づいてアクセスを制御する必要があります。たとえば、「InvoiceController」というコントローラーがあるとします。以下のような方法が考えられます。

CreateNewInvoice() // Accessible only by admin

UpdateInvoice(...) // Accessible for admin and data operator

ViewInvoice(...) // Accessible for admin, data operator and support user

(役割テーブルに存在するユーザーのみがシステムにアクセスできます。それ以外のユーザーのアクセスは拒否されます。)

データベースに保存されているロールに基づいて、メソッド レベルで認証を使用する方法を教えてください。

4

1 に答える 1

2

次の 2 つの方法で実行できます。

AuthorizeAttributeロールをロードしてチェックするカスタムを作成します。

しかし、より良い解決策は、カスタムを作成してIPrincipal/IIdentityに割り当てることApplication_OnPostAuthenticateRequestです。そうすることで、それ以上カスタマイズすることなく、組み込みの承認モデルを最大限に活用できます。

ここで私の答えを参照してください: https://stackoverflow.com/a/10949178/70386

于 2012-11-05T06:41:26.860 に答える