【问题标题】:asp.net web app - check user exist in Active Directory groupasp.net web app - 检查用户是否存在于 Active Directory 组中
【发布时间】:2011-05-30 16:00:54
【问题描述】:

我有 asp.net 网络应用程序,如何检查当前登录的用户(客户端)是否在特定的 Active Directory 组中。 谢谢

【问题讨论】:

  • 很好的答案,但在实施时收到 {"Unknown error (0x80005000)"} 以供将来参考。通过将域添加到以下行来修复: var pc = new PrincipalContext(ContextType.Domain, Environment.UserDomainName);

标签: c# asp.net active-directory active-directory-group


【解决方案1】:

试试下面的方法。只需根据您的需要更改它...

public List<string> GetGroupNames(string userName)
{
    var pc = new PrincipalContext(ContextType.Domain);
    var src = UserPrincipal.FindByIdentity(pc, userName).GetGroups(pc);
    var result = new List<string>();
    src.ToList().ForEach(sr => result.Add(sr.SamAccountName));
    return result;
}

【讨论】:

  • 您好 Leniel,感谢您的快速回复。我刚刚复制了您在简单的网络应用程序上运行的代码。这给出了一个错误 - {"Unknown error (0x80005000)"},我错过了什么吗?
  • @Yogesh:检查一下:lansweeper.com/forum/… 这是一个相当广泛的错误。如果您在 Google 中搜索此未知错误,您可能会遇到很多问题...
  • 这需要 .NET 3.5 或更高版本 - 不适用于 2.0 或 3.0。另外:运行 Web 应用程序的用户需要具有至少读取 AD 的权限。
  • @Yogesh:在哪里(在代码的哪一行)调试时会出现这个错误吗??
  • 现在我使用了我是成员的现有组,并且我使用了这行代码 flag = User.IsInRole("ADGroupName"); .... 答对了!它奏效了
【解决方案2】:

试试这个(仅适用于 ASP.NET,但类似的调用可用于 Windows 应用程序)

    if (HttpContext.Current.User.IsInRole("RoleName"))
    {
        return true;
    }
    else
    {
        return false;
    }

希望这会有所帮助
哈维萨瑟

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 2011-01-12
    • 1970-01-01
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    相关资源
    最近更新 更多