0

これは私の最初の質問であり、どこから始めればよいか本当にわかりません。

「管理者、モデレーターなど...」などのロールに基づいてユーザーを承認する必要がある Microsoft Web api テンプレートを使用してサンプルを作成しようとしています。のようなコントローラーの上部の役割

[Authorize ( Roles ="Admin, Moderators, etc...")]

データベースに別のロールを作成するとどうなりますか? 新しい Role xD を追加するには、コントローラーを変更する必要があります。質問はそうです。AuthorizeFilter のようなクラスを拡張して、データベースからロールを取得し、コントローラーで検証する方法は? つまり、管理者ロールにあるユーザーがそれを承認し、その逆ですか?

もう1つの質問は、ユーザーがモデレーターの役割を持っているが、コントローラーで作成アクションを使用することだけが権限を持っている場合のようなものを管理できる優れた認証フィルターを構築する方法ですか?

例を教えていただければ幸いです...よろしくお願いします

Ps。私の英語でごめんなさい

4

1 に答える 1

1

役割ベースの承認が何らかの形で制限されており、承認属性が少し厳格であることに同意します。

一部のシナリオでは、役割ベースの承認では不十分であり、拡張する必要があります。許可の概念を導入できます。アクションを実行するために特定のロールのメンバーである必要があるという要件ではなく、特定の権限が必要なアクションを実行する権限があることを述べることができます。したがって、authorize 属性の代わりに RequiredPermisionAttribute を使用します。もちろん、認可フィルターとして RequiredPermissionAttribute を記述する必要があります。

データベースには、Permissions テーブル、RolesTable、RolePermissions テーブル、UsersInRole テーブルがあります。

したがって、ユーザーは 1 つ以上のロールのメンバーになることができます。ロールには、1 つ以上のアクセス許可を設定できます。ユーザーが特定の権限を持つロールのメンバーである場合、そのユーザーは特定の権限を持ちます。

必要なアクセス許可フィルターは、ログインしているユーザーがアクセス許可を持つロールのメンバーであるかどうかを確認し、そうでない場合は 401 notauthorized を返します。

これはより柔軟なアプローチであり、アクションはロールに関連付けられておらず、ロールには固定数の権限がありません。

于 2015-02-07T09:08:23.327 に答える