0

Je veux avoir une idée de la création de CustomRoles lorsque l'utilisateur se connecte à l'application. Je Model Feature qui ressemble comme suit:Fournisseur de Rôle Personnalisé pour Identity Framework

public class Feature : AuditableEntity 
    { 
     [Display(Name = "Code")] 
     [MaxLength(50)] 
     public string FeatureCode { get; set; } 
    } 

Je veux créer des rôles en fonction du FeatureCode dans le modèle de fonction, de sorte que lorsqu'un LogIn l'application utilisateur se comporte avec les rôles assignés à cet utilisateur perticular.

Je souhaite utiliser quelque chose comme ceci:

valeur bool = User.IsInRole (FeatureCode)

qui renverra vrai ou faux selon les caractéristiques attribuées à l'utilisateur. merci d'avance.

Répondre

0

J'ai utilisé la classe ClaimsAuthentionManager pour fournir un mécanisme de transformation des utilisateurs entrants avec des revendications (rôles). Voici quelques exemples de code d'un ClaimsAuthenticationManager personnalisé:

public class ClaimsTransformationModule : ClaimsAuthenticationManager 
{ 
    public override ClaimsPrincipal Authenticate(string resourceName, ClaimsPrincipal incomingPrincipal) 
    { 
     if (incomingPrincipal != null && incomingPrincipal.Identity.IsAuthenticated == true) 
     { 
      Claim nameIdentifier = incomingPrincipal.Claims.Where(foo => foo.Type == ClaimTypes.Name).FirstOrDefault(); 
      var roles = GetRoles(nameIdentifier.Value); // Get the roles from the backend based on the user 
      foreach (var role in roles) //This is the part applying roles to the Claim (user) 
      { 
       ((ClaimsIdentity)incomingPrincipal.Identity).AddClaim(new Claim(ClaimTypes.Role, role)); 
      } 
      ((ClaimsIdentity)incomingPrincipal.Identity).AddClaim(new Claim(ClaimTypes.Sid, GetUserId(nameIdentifier.Value))); 
     } 

     return incomingPrincipal; 
    } 

Ensuite, dans le web.config vous pouvez configurer le système pour utiliser votre commande Claims Manager:

<system.identityModel> 
<identityConfiguration> 
    <claimsAuthenticationManager type="ClaimsTransformation.ClaimsTransformationModule, ClaimsTransformation" /> 

ensuite pour obtenir les rôles pour le moment utilisateur connecté vous allez:

var user = ClaimsPrincipal.Current; 
bool isInRole = user.IsInRole(roleName); 

Mais un coup d'oeil sur le site leastprivilege.com pour plus d'informations.

Cheers Frank

Questions connexes