Principal.IsInRole为同一WindowsPrincipal返回不同的结果,具体取决于它的构造方式

时间:2017-04-06 14:29:00

标签: c# .net windows-identity

我有两种方法来构建相同的WindowsPrincipal对象

根据我的构建方式,我得到principal.IsInRole()

的不同结果

这是我的代码:

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.Nameprincipal2.Identity.Name是相同的。

知道发生了什么事吗?

1 个答案:

答案 0 :(得分:0)

那两个主要的彼此不同。因为您正在选择当前用户并创建用户。如果您从windowsidentity检查主要列表,您将看到,您创建的principal2是新的,未分配任何组

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;

您将看到groupNames1和groupNames2不同的组。

相关问题