我认真地开始认为,就发展努力而言,我工作的地方受到了诅咒,我一直遇到非常奇怪的问题。
我正在使用Roles.IsUserInRole(@"Domain\Domain Admins")
来检查用户是否是域管理员。
出于某种原因,虽然我已经参与其中多年,但它并不认识我。我一开始认为可能与空间有关,但Roles.IsUserInRole(@"Domain\Domain Users")
效果很好。两个组都位于同一个AD OU中。
我是否会失去理智,或者“Domain Admins”小组真的有什么特别之处吗?
编辑:
List<GroupPrincipal> result = new List<GroupPrincipal>();
PrincipalContext yourDomain = new PrincipalContext(ContextType.Domain);
UserPrincipal user = UserPrincipal.FindByIdentity(yourDomain, User.Identity.Name);
if (user != null)
{
PrincipalSearchResult<Principal> groups = user.GetAuthorizationGroups();
foreach (Principal p in groups)
{
if (p is GroupPrincipal)
{
result.Add((GroupPrincipal)p);
}
}
}
var myRoles = Roles.GetRolesForUser(User.Identity.Name);
我使用上面的代码来验证组成员资格。 Domain Admins
列在result
变量中,但不在myRoles
答案 0 :(得分:1)
事实证明,这与提升的权利有关。
请参阅:https://www.reddit.com/r/csharp/comments/4cvr0p/domain_admin_is_not_showing_up_in_my_role_list_im/
(不解释一个解决方法,只是一个原因)