2011-05-30 63 views
2

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

+0

很好的答案,但未来的参考收到{“未知错误(0x80005000)”}实施。通过将域添加到以下行来修复:var pc = new PrincipalContext(ContextType.Domain,Environment.UserDomainName); – 2013-02-07 03:29:59

回答

3

请尝试以下方法。只需根据自己的需要改变它...

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; 
} 
+0

嗨Leniel,谢谢你的快速回复。我只是复制你的代码运行在简单的web应用程序上。这给了一个错误 - {“未知的错误(0x80005000)”},我错过了什么? – Yogesh 2011-05-30 16:11:12

+0

@Yogesh:检查此:http://www.lansweeper.com/forum/yaf_postsm8519_Active-directory-computer-lookup-Unknown-error-0x80005000.aspx这是一个相当广泛的错误。如果您在Google中搜索此未知错误,您会遇到很多可能的问题... – 2011-05-30 16:17:07

+1

这需要** .NET 3.5 **或更高版本 - 不适用于2.0或3.0。另外:Web应用程序正在运行的用户需要具有至少读取AD的权限。 – 2011-05-30 16:20:56

1

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

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

希望这有助于
哈维Sather

相关问题