Active Directory如何从distinguishedName获取用户

时间:2017-05-24 14:20:24

标签: asp.net-mvc active-directory

我需要一些关于在asp.net mvc项目中使用distinguishedName检索用户的帮助。我有一个搜索功能,有2个属性要加载,“displayName”和“distinguishedName”。找到后,我会返回一个视图,其中包含找到每个用户的这两个参数的列表。然后我希望能够点击用户并立即显示他们的信息。那么一旦我只传递了这两个参数,如何加载有关用户的信息?

以下是最初搜索的功能:

public List<string> SearchUserByName(string name){
        try{

                DirectoryEntry ldapConnection = createDirectoryEntry();
                DirectorySearcher search = new DirectorySearcher(ldapConnection);
            search.PropertiesToLoad.Add("displayName");
            search.PropertiesToLoad.Add("distinguishedName");
            resultCollection = search.FindAll();

            if (resultCollection.Count == 0)
            {
                return null;
            }
            else
            {
                foreach(SearchResult sResult in resultCollection)
                {
                    if (sResult.Properties["distinguishedName"][0].Equals(null) ||
                        sResult.Properties["displayName"][0].Equals(null))
                        continue;

                    displayName.Add(sResult.Properties["distinguishedName"][0].ToString());
                    displayName.Add(sResult.Properties["displayName"][0].ToString());
                }
            }
            ldapConnection.Close();
            ldapConnection.Dispose();
            search.Dispose();
            return displayName;
        }
        catch (Exception e)
        {
            Console.WriteLine("Exception caught:\n\n" + e.ToString());
        }
        return null;
    }

现在我的观点:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Résultat de recherche d'utilisateurs</title>
</head>
<body>
    <h2> Résultat de recherche d'utilisateurs</h2>


    @{
        var incLoop = 0;
        var incArr = 0;
        var list = (List<string>)ViewData["Names"];
        var size = list.Count();
        string[] objSID = new string[size];
        foreach (var link in list)
        {
            if (incLoop % 2 == 0)
            {
                objSID[incArr] = link;
                incArr++;
            }
            else
            {
               <a href="@Url.Action("ShowUserInfo", "Home", new {dinstinguishedName=objSID[incArr-1]})">@link</a><br/>

            }
            incLoop++;
        }
    }
</body>
</html>

如果单击标签中的@link,您将获得信息,该信息显示在下一个视图中。我还将我的列表拆分为不在搜索结果视图中显示distinguishedName。 我现在所做的是,当你点击链接时研究Active Directory,但这似乎是不好的做法(搜索一次结果两次)。有什么想法吗?

谢谢你,希望它很清楚

0 个答案:

没有答案