1

Je suis nouveau dans l'identité asp.net. J'essaie de l'apprendre. Je veux comprendre comment utiliser le rôle dynamique dans l'attribut authorize dans l'identité d'asp.net MVC 5. parce que si nous avons beaucoup de rôle dans notre application, alors nous ne pouvons pas la décorer en dur. aidez-moi s'il vous plaît en fournissant un bon exemple dans les détails.comment utiliser le rôle dynamique dans l'attribut authorize dans asp.net mvc 5 identity

Merci d'avance :-)

+0

Que voulez-vous dire «rôle dynamique»? – Hadee

+0

Essayez d'établir une convention et d'utiliser une expression régulière dans l'attribut Authorize. Je l'ai fait dans le passé, je ne sais pas si elle est soutenue en ce moment. – Miguel

Répondre

0

vous trouverez plein d'expliquer et de projet de démonstration pris en charge par Microsoft dans ce lien avec plusieurs exemples sur l'utilisation de l'identité et des rôles mvc, affirme ....

MVC_Identity

1

Étendre la AuthorizeAttribute pour soutenir regex aime ceci:

class RegexAuthorizeAttribute : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     if (httpContext == null) 
     { 
      return base.AuthorizeCore(httpContext); 
     } 

     IPrincipal user = httpContext.User; 
     if (user == null || user.Identity == null || !user.Identity.IsAuthenticated) 
     { 
      return base.AuthorizeCore(httpContext); 
     } 

     if (!string.IsNullOrEmpty(Users) && Regex.IsMatch(user.Identity.Name, Users)) 
     { 
      return true; 
     } 

     if (!string.IsNullOrEmpty(Roles)) 
     { 
      var rolesManager = new RoleStore<IdentityRole>(httpContext.GetOwinContext().Get<ApplicationDbContext>()); 
      var matchedRoles = rolesManager.Roles.Select(t => t.Name).AsEnumerable().Where(t => Regex.IsMatch(t, Roles)); 

      if (matchedRoles.Any(user.IsInRole)) 
      { 
       return true; 
      } 
     } 

     return base.AuthorizeCore(httpContext); 
    } 
} 

Plus tard, vous pouvez organiser vos rôles en groupes pour être en mesure de faire correspondre un tas d'entre eux en utilisant des expressions régulières comme ceci:

[RegexAuthorize(Roles = @"Role #\d")] 
    public ActionResult About() 
    { 
     ViewBag.Message = "Your application description page."; 

     return View(); 
    } 

Cela correspondra à tous les rôles suivants: Rôle # 0, # 1 Rôle, ..., Rôle # 9

Espoir cette aide!