1. ホーム
  2. c#

asp.net identity ログインしたユーザーのすべてのロールを取得する

2023-09-15 20:55:22

質問

ロールベースメニューを作成しました。 この チュートリアルに従いました。このページの下の方に、次のようなコードがあります。

String[] roles = Roles.GetRolesForUser();

これは、現在ログインしているユーザーのすべてのロールを返します。新しいASP.NET Identityシステムでこれを実現するにはどうしたらよいかと考えていました。

それはまだかなり新しいもので、それについて調べることはあまりありません。

どのように解決するのですか?

Controller.User.IdentityClaimsIdentity . クレームを検査することでロールのリストを得ることができます....

var roles = ((ClaimsIdentity)User.Identity).Claims
                .Where(c => c.Type == ClaimTypes.Role)
                .Select(c => c.Value);

--- 更新

もう少し分解してみると...。

using System.Security.Claims;

// ........

var userIdentity = (ClaimsIdentity)User.Identity;
var claims = userIdentity.Claims;
var roleClaimType = userIdentity.RoleClaimType;
var roles = claims.Where(c => c.Type == ClaimTypes.Role).ToList();

// or...
var roles = claims.Where(c => c.Type == roleClaimType).ToList();