LDAP返回的属性有些不是我给的,它没有加载部门属性?MVC 5

问题描述 投票:0回答:1

我的代码用于获取AD特定用户的详细信息。

  SearchResultCollection results;
                    DirectorySearcher ds = null;
                    DirectoryEntry de = new
                         DirectoryEntry("LDAP://****");
                    SearchResult sr;

                    ds = BuildUserSearcher(de);

                    ds.Filter = string.Format("(&(objectClass=user)(|(&(SAMAccountName={0}*))))", model.User.Username.Trim());

                    sr = ds.FindOne();



 public DirectorySearcher BuildUserSearcher(DirectoryEntry de)
    {
        DirectorySearcher ds = null;

    ds = new DirectorySearcher(de);

    ds.PropertiesToLoad.Add("department"); 
    // Full Name
    ds.PropertiesToLoad.Add("name");
    // Email Address
    ds.PropertiesToLoad.Add("mobile");
    // First Name
    ds.PropertiesToLoad.Add("givenname");
    // Last Name (Surname)

    // Login Name
    ds.PropertiesToLoad.Add("userPrincipalName");
    // Distinguished Name
    ds.PropertiesToLoad.Add("distinguishedName");

    ds.PropertiesToLoad.Add("sn");

    return ds;
}

代码是工作的,并返回值,但不是按照要求,它是返回我这些属性。

"distinguishedname"
"userprincipalname"
"givenname"
"sn"
"name"
"adspath"

它没有从方法中返回属性,我必须需要部门?任何想法

我的广告路径值如下

""LDAP://CN=John cena,OU=Developers,OU=IT Department,OU=Users Acounts,DC=Mumbai,DC=Local""

有什么办法可以从这个网址得到它"OU=IT Department"

希望得到您的建议

谢谢

c# asp.net-mvc-5 active-directory ldap activedirectorymembership
1个回答
0
投票

该AD账户是否有一个值在 department 属性?如果该属性为空,它将不会出现在 Properties 收集在所有。这很正常。

所以你必须使用 sr.Properties.Contains("department") 以在你尝试使用它之前检查该值是否存在。

补充一点:你的 BuildUserSearcher 可以简化成这样。

public DirectorySearcher BuildUserSearcher(DirectoryEntry de)
{
    return new DirectorySearcher(de) {
        PropertiesToLoad = {
            "department",
            "name",              // Full Name
            "mobile",            // Email Address
            "givenname",         // First Name
            "userPrincipalName", // Login Name
            "distinguishedName", // Distinguished Name
            "sn"                 // Last Name (Surname)
        }
    };
}

功能上没有区别,只是代码更短而已。

© www.soinside.com 2019 - 2024. All rights reserved.