2017-03-14 9 views
10

を追加します。Owinが主張 - 私は、ユーザーが次の役割を割り当てることが可能なアプリケーション持っている複数のClaimTypes.Role

  • をSuperAdmin
  • 管理
  • ユーザー

ユーザーが持っていることの一つ2つ以上の役割が割り当てられます。 SuperAdminとUserの両方。私のアプリケーションはクレームを使用しているので、クレームを通してユーザーの役割を認証したいと思っています。 like:

[Authorize(Roles="Admin")] 

残念ながら、私はClaimTypes.Roleに複数のロールを追加する方法がわかりません。あなたが見ることができるように、私は説明のために複数の役割を追加しようとしましたが、明らかにその動作しませんので、間違った方法で行われ、

var identity = new ClaimsIdentity(new[] { 
       new Claim(ClaimTypes.Name, name), 
       new Claim(ClaimTypes.Email, email), 
       new Claim(ClaimTypes.Role, "User", "Admin", "SuperAdmin") 
     }, 
      "ApplicationCookie"); 

:私は、次のコードを持っています。 それでは、どんな助力も大歓迎です。

答えて

16

クレームIDは、同じクレームタイプの複数のクレームを持つことができます。これにより、HasClaimメソッドを使用して、特定のユーザーロールが存在するかどうかを確認することができます。

var identity = new ClaimsIdentity(new[] { 
      new Claim(ClaimTypes.Name, name), 
      new Claim(ClaimTypes.Email, email), 
      new Claim(ClaimTypes.Role, "User"), 
      new Claim(ClaimTypes.Role, "Admin"), 
      new Claim(ClaimTypes.Role,"SuperAdmin") 
    }, 
     "ApplicationCookie"); 
+0

これはかなり素晴らしいです、私はちょうど私のdbクエリからループを作ることができると思います!ありがとうございました! –

関連する問題