c# - tutorial - user asp net




asp.net identity obtient tous les rôles de l'utilisateur connecté (2)

N'utilisez pas l'espace de noms @using System.IdentityModel.Claims, au lieu de cela

@using System.Security.Claims

    @using System.Security.Claims
    @using Microsoft.AspNet.Identity
    @{      
       var claimsIdentity = User.Identity as System.Security.Claims.ClaimsIdentity;
       var customUserClaim = claimsIdentity != null ? claimsIdentity.Claims.FirstOrDefault(x => x.Type == "cutomType") : null;
       var customTypeValue= customUserClaim != null ? customUserClaim .Value : User.Identity.GetUserName();
       var roleOfUser = claimsIdentity != null ? claimsIdentity.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Role).Value :"User";

}

J'ai créé un menu basé sur les rôles pour lequel j'ai suivi this tutoriel. En bas de cette page, vous verrez cette ligne de code:

String[] roles = Roles.GetRolesForUser();

Il renvoie tous les rôles de l'utilisateur actuellement connecté. Je me demandais comment accomplir cela avec le nouveau système ASP.NET Identity?

C'est encore assez nouveau et il n'y a pas grand chose à trouver à ce sujet.


Voici une méthode d'extension de la solution ci-dessus.

    public static List<string> Roles(this ClaimsIdentity identity)
    {
        return identity.Claims
                       .Where(c => c.Type == ClaimTypes.Role)
                       .Select(c => c.Value)
                       .ToList();
    }






roles