如何获取C#If Else逻辑以排除AD安全组的成员



我有以下代码来获取当前用户的AD安全组。

PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
PrincipalSearchResult<Principal> groups = UserPrincipal.FindByIdentity(ctx, User.Identity.Name).GetAuthorizationGroups();
IEnumerable<string> groupNames = groups.Select(x => x.Name);

我已经检查过了,所有用户的安全组都包含在groupNames中。然而,以下逻辑不能正常工作——它阻止了"Admins"one_answers"Mgrs"以及其他所有人:

if (!(groupNames.Contains("Admins") || groupNames.Contains("Mgrs"))) { Response.Redirect("~/AccessDenied.aspx"); }

我也尝试过以下方法,但也不起作用——相反,它让每个人都可以查看页面:

if (groupNames.Contains("Admins") || groupNames.Contains("Mgrs"))
{
return;
}
else
{
Response.Redirect("~/AccessDenied.aspx");
}

我的语法或逻辑不正确吗?我需要"Admins"或"Mgrs"安全组中的所有用户都能够访问该页面,并且所有其他用户都应该重定向到AccessDenied.aspx。

这是一个使用visualstudio2019的asp.net网络表单应用程序。

我不知道为什么,但它现在正在工作。我使用相同的代码,没有更改。。。

if (groupNames.Contains("Admins") || groupNames.Contains("Mgrs"))
{
return;
}
else
{
Response.Redirect("~/AccessDenied.aspx");
}

最新更新