2017-04-06 4 views
0

J'ai deux façons de construire le même WindowsPrincipal-objetsPrincipal.IsInRole retourne des résultats différents pour le même WindowsPrincipal, selon la façon dont il est construit

Selon la façon dont je construis, je reçois des résultats différents pour principal.IsInRole()

Voici mon code:

var principal1 = new WindowsPrincipal(WindowsIdentity.GetCurrent()); 
var principal2 = new WindowsPrincipal(new WindowsIdentity("myName")); 

principal1.IsInRole("groupName") : returns false 
principal2.IsInRole("groupName") : returns true 

principal1.Identity.Name et principal2.Identity.Name sont les mêmes.

Une idée de ce qui se passe?

+0

Ce lien discute exactement le même problème: http://stackoverflow.com/questions/4563446/whats-the-difference-between-retrieving-windowsprincipal-from-windowsidentity-a –

Répondre

0

ces 2 principaux différents les uns des autres. Parce que vous sélectionnez l'utilisateur actuel et en créant nouvel utilisateur. Si vous cochez la liste principale de la WindowsIdentity vous verrez, capital2 de la vôtre que vous avez créé est nouveau et pas affecté un groupe

var groupNames1 = from id in WindowsIdentity.GetCurrent().Groups 
       select id.Translate(typeof(NTAccount)).Value; 

var groupNames2 = from id in (new WindowsIdentity("myName")).Groups 
       select id.Translate(typeof(NTAccount)).Value; 

Vous verrez différents groupNames1 et groupNames2 ensembles de groupe.

+0

principal2 a des groupes. Le même nombre que principal1, mais ils sont différents groupes. Puisque les deux principaux ont le même nom, ne devraient-ils pas avoir les mêmes groupes? –