我有两种方法来构建相同的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.Name
和principal2.Identity.Name
是相同的。
知道发生了什么事吗?
答案 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不同的组。