C# 如何判断SPUser是否为Active Directory帐户

C# 如何判断SPUser是否为Active Directory帐户,c#,.net,sharepoint,sharepoint-2010,spuser,C#,.net,Sharepoint,Sharepoint 2010,Spuser,我正在进行一个项目,其中客户端希望将某些内容仅限于Active Directory用户。是否有任何方法可以识别SPUser是没有解析域的用户名字符串或类似内容的AD用户。像SPUser.IsADUser这样的东西会很棒 编辑 这似乎有效,但我不确定这是否足够可靠?对于这个用例,识别用户是windows用户就足够了,因为没有本地系统帐户 SPUser user = SPContext.Current.Web.CurrentUser; string userName = user.LoginName

我正在进行一个项目,其中客户端希望将某些内容仅限于Active Directory用户。是否有任何方法可以识别SPUser是没有解析域的用户名字符串或类似内容的AD用户。像SPUser.IsADUser这样的东西会很棒

编辑 这似乎有效,但我不确定这是否足够可靠?对于这个用例,识别用户是windows用户就足够了,因为没有本地系统帐户

SPUser user = SPContext.Current.Web.CurrentUser;
string userName = user.LoginName.Substring(user.LoginName.IndexOf('|') + 1);
SPPrincipalInfo info = SPUtility.ResolveWindowsPrincipal(SPContext.Current.Site.WebApplication, userName, SPPrincipalType.User, false);
if(info != null){
    //THIS IS A WINDOWS ACCOUNT
}

根据我的经验,利用受众来实现这一目的要好得多。然后,您可以使用访问群体属性轻松地修剪任何web部件。你可以阅读关于观众的文章。当然,只有配置了用户配置文件同步,它才会起作用

在我看来,这是更好的方法。我将查看此线程,看看是否有人提出了更好的解决方案。谢谢,但不幸的是,这不会影响客户端。如果是因为您没有运行用户配置文件服务,那么您可以使用sharepoint组。它的工作原理与观众的工作原理相同。唯一不同的是,你需要手动填充这个组或添加自定义代码来完成这项工作。还有一件事我想问-你说的广告用户是什么意思?如果您具有NTLM身份验证,则所有用户都是域用户。你能提供一个非广告用户的例子吗?