web-dev-qa-db-ja.com

Owinクレーム-複数のClaimTypes.Roleを追加します

ユーザーに次のロールを割り当てることができるアプリケーションがあります。

  • SuperAdmin
  • 管理者
  • ユーザー

1人のユーザーが2つ以上の役割を割り当てている場合があります。 SuperAdminとUserの両方。私のアプリケーションはクレームを使用しているため、クレームを介してユーザーロールも認証したいです。のような:

[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");

ご覧のとおり、説明のためにロールを追加しようとしましたが、明らかに間違った方法で行われたため、機能しません。したがって、どんな助けも大歓迎です。

21

クレームIDは、同じClaimTypeを持つ複数のクレームを持つことができます。これにより、特定のユーザーロールが存在するかどうかを確認するために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");
44
Parameswar Rao