0

「Individual User Accounts」を選択すると、MVC6 Core 1.0の最新のIdentity 3.xが使用されています。ASP.NET IDとRoleFunctionsを作成する

私のユーザー認証の要件は以下の通りです:

Users -> AspNetUsers 
Roles -> AspNetRoles 
UserRoles -> AspNetUserRoles 
RoleFunctions -> I don't see a table for this in the Identity db structure 

RoleFunctionsはなどDeleteCustomers、AccessToCustomerPage、などのシステム機能のいずれかの一種である

私はASP.NETを想定するつもりです

アイデンティティは、ロールベースの認証でこの特別なステップをサポートしていないので、自分自身に関わるテーブルと関数を作成する必要があります。これは本当ですか、それとも私のためにそこにありますか?私はそれを見ていませんか?

+0

私はあなたが**ポリシーを参照していると思います**。私はあなたがロール関数の既知の数を持っていると思いますあなたのコードで知られています(あなたはいくつかのダイナミズムをターゲットにしていない限り)?ハードコーディングやポリシーの作成を検討することができます。 "顧客を削除するには、ユーザーはこれ、この、および/またはこの役割を持っていなければなりません"。ここをクリックしてください:https://docs.asp.net/en/latest/security/authorization/roles.html#policy-based-role-checks – regnauld

+0

これで、あなたはすべてのグローバル定数をロール関数を使用し、RoleFunctionsテーブルが不要なポリシーを使用しますか?私はすべての小切手を役割レベルではなく機能レベルで実行する必要があるということです。たとえば、現在ログインしているユーザーがDeleteCustomerを含むロールの一部である場合、ビューモデルにtrashbinを表示します。 –

答えて

0

アイデンティティを使用すると、コントローラまたはコントローラ内の特定のアクションに基づいて認可を決定できます。

[Authorize] 
public void controllermethod(param) {} 

許可するには、この操作またはコントローラを訪問する前に認証が必要です。コントローラメソッドの上にあなたが

[Authorize(Roles="admin")] 
public void controllerMethod(param) {} 

役割がのリストを受け入れることができます置くので

、あなただけの管理者が実行できるアクション(または作成した任意のユーザの役割グループ)を作成したい場合には、 (Roles = "Admin"、 "Manager"のように)複数のロールを1つの認証要求に入れることができます。

コントローラーレベルでこれを実行して、コントローラー内のすべてのアクションを許可要求に従わせることもできます。 http://www.asp.net/identityを:あなたは、コントローラの宣言の上にそれを置く場合は基本的に私は、これはあなたが探しているものであると思います、そしてあなたはここより良いガイドを見つけることができるすべてのアクションが影響を受けることになりますが、あなたは

[AllowAnonymous] 
public void nosecuritycontrolleraction {} 

で特定のアクションをホワイトリストに登録することができます

UPDATE 1 DeleteCustomerの例では、顧客オブジェクトの削除を処理するコントローラにいくつかのメソッドがあると仮定しています。これらのメソッドの上に[Authorize(Roles = "CustomerAdmin")]と入力すると、UserRolesのcustomerAdminロールを持つユーザーだけがそのアクションを使用できます。

のような:

[Authorize(Roles="CustomerAdmin")] 
public ActionResult DeleteCustomer(string/int id){} 
+0

これは私が探しているものに近いです。この例に対応するために投稿を更新できますか?CustomerAdminという役割があります。 CustomerAdminが実行できる機能は、どこで指定しますか?顧客の表示と削除ができるとします。 ViewModelで、CustomerAdminという役割を持つユーザーのゴミ箱アイコンのみを表示したいとします。私は多くの場合、ユーザがどのような役割を担っていても、顧客を削除する機能を持っていれば、ごみ箱を表示するかどうかをチェックすることが多いでしょう。私のRoleFunctionsの役割はどこにあるのでしょうか。 –

+0

私が上に述べようとしているのは、役割レベルではなく機能レベルですべての小切手を行うことが好ましいということです。たとえば、現在ログインしているユーザーが、ハードコードされた関数DeleteCustomerを含むロールの一部である場合、ビューモデルにごみ箱を表示します。どのようにこれを行うシステムを設定するつもりですか? –

+0

DeleteCustomerの例では、顧客オブジェクトの削除を処理するコントローラにいくつかのメソッドがあると仮定しています。これらのメソッドの上に[Authorize(Roles = "CustomerAdmin")]と入力すると、UserRolesのcustomerAdminロールを持つユーザーだけがそのアクションを使用できます。 –

関連する問題