組み込みの属性[Authorize]
を使用すると、特定のアクションを制限して、特定のロールのみが実行できるようにすることができます。
あなたがしようとしていることについては、「関数 X、Y、Z」を役割として扱い、現在役割として持っているものを「ユーザー グループ」などとして扱うことをお勧めします。したがって、クライアントは、特定の「ロール」に異なる「ユーザー グループ」アクセスを割り当てることができます。
このようにして、組み込みのメンバーシップ/ロール/承認のものを利用できます。独自の MembershipProvider と RoleProvider を実装するだけで済みます。
ロール プロバイダーの実装でstring[] GetRolesForUser(string username)
は、データベース ルックアップを実行して、どの「ユーザー グループ」に属しているか、したがってどの「ロール」にアクセスできるかを確認する必要があります。
これを行うと、属性を介してさまざまな機能へのアクセスを簡単に制限し[Authorize]
、ログインプロセスを処理するために標準のメンバーシップを使用できます。
クライアントが「ユーザー グループ」と「ロール」ではなく「ロール」と「機能」と呼ぶことに固執する場合、これが実装方法とはまったく異なることをクライアントに伝える必要はありません :)
編集
または、独自の Authorization 属性を作成し、 から派生させるだけで、ユーザーが do do function 'X' を許可されている役割にある場合は true または falseAuthorizeAttribute
をオーバーライドして返すことができます。AuthorizeCore( HttpContextBase httpContext)