2017-03-14 1 views
10

J'ai une application dans laquelle les utilisateurs peuvent attribuer les rôles suivants:demandes Owin - Ajouter plusieurs ClaimTypes.Role

  • SuperAdmin
  • Administrateur
  • utilisateur

Un utilisateur peut avoir assigné deux ou plusieurs rôles, par exemple. à la fois SuperAdmin et Utilisateur. Mon application utilise des revendications et, par conséquent, je souhaite également authentifier les rôles d'utilisateur via des revendications. comme:

[Authorize(Roles="Admin")] 

Malheureusement, je ne sais pas comment je peux ajouter plusieurs rôles à mon ClaimTypes.Role. J'ai le code suivant:

var identity = new ClaimsIdentity(new[] { 
       new Claim(ClaimTypes.Name, name), 
       new Claim(ClaimTypes.Email, email), 
       new Claim(ClaimTypes.Role, "User", "Admin", "SuperAdmin") 
     }, 
      "ApplicationCookie"); 

Comme vous pouvez le voir, je l'ai essayé d'ajouter d'autres rôles dans l'intérêt d'illustrer, mais de toute évidence son fait d'une mauvaise façon, et donc ne fonctionne pas. Toute aide est donc très appréciée.

Répondre

16

Une revendication d'identité peut avoir plusieurs revendications avec le même ClaimType. Cela permettra d'utiliser la méthode HasClaim pour vérifier si un rôle d'utilisateur spécifique est présent.

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"); 
+0

C'est assez génial, je suppose que je pourrais juste faire une boucle de ma requête DB alors! Je vous remercie! –