【问题标题】:How I create a LDAP Filter with City ("l") Parameter如何使用城市(“l”)参数创建 LDAP 过滤器
【发布时间】:2012-07-24 13:01:34
【问题描述】:

我编写了一个从 Active Directory 获取数据的程序,我需要一个 LDAP 过滤器来过滤数据到 l(城市)参数。

我的代码:

public void SearchByCity(string city)
        {
                                                         //What I must do :(
            DirectoryEntry Entry = new DirectoryEntry("LDAP://<l= + city + >");
            string filter = "(&(objectClass=user)(objectCategory=person)(cn=*))";
            DirectorySearcher Searcher = new DirectorySearcher(Entry, filter);

            var q = from s in Searcher.FindAll().OfType<SearchResult>()
                    select new
                    {
                        Benutzer = GetProperty(s, "sAMAccountName"),
                        eMail = GetProperty(s, "mail"),
                        Vorname = GetProperty(s, "givenName"),
                        Nachname = GetProperty(s, "sn"),
                        Telefon = GetProperty(s, "telephoneNumber"),
                        UserID = s.GetDirectoryEntry().Guid
                    };

            this.myListView.DataSource = q;
            this.myListView.DataBind();
        }

塔拉索夫

【问题讨论】:

  • 在 LDAP 过滤器中不适合城市,但我现在有解决方案...我发布它
  • 字符串过滤器 = "(&(objectClass=user)(objectCategory=person)(l=" + city + ")(cn=*))"; //city是LDAP参数值
  • 考虑当前的过滤器组件cn=*。如果所有候选条目都具有CN 属性,则这可能不是必需的。如果是这种情况,如果没有当前过滤器,搜索会更快。
  • CN 对用户是强制性的,因此您不需要包含过滤器的那部分。

标签: c# asp.net active-directory ldap directoryentry


【解决方案1】:

孤独:

public void SearchByPlace(string city)
        {
            DirectoryEntry Entry = new DirectoryEntry("LDAP://" + Properties.Settings.Default.Domain);
            string filter = "(&(objectClass=user)(objectCategory=person)(l=" + city + ")(cn=*))";
            DirectorySearcher Searcher = new DirectorySearcher(Entry, filter);

            var q = from s in Searcher.FindAll().OfType<SearchResult>()
                    select new
                    {
                        Benutzer = GetProperty(s, "sAMAccountName"),
                        eMail = GetProperty(s, "mail"),
                        Vorname = GetProperty(s, "givenName"),
                        Nachname = GetProperty(s, "sn"),
                        Telefon = GetProperty(s, "telephoneNumber"),
                        UserID = s.GetDirectoryEntry().Guid
                    };

            this.myListView.DataSource = q;
            this.myListView.DataBind();
        }

【讨论】:

    【解决方案2】:

    使用这个过滤器

    (&(objectCategory=person)(objectClass=user)(!sAMAccountType=805306370)(l=yourcity))
    

    【讨论】:

      猜你喜欢
      • 2020-06-01
      • 2022-08-14
      • 2021-09-04
      • 1970-01-01
      • 1970-01-01
      • 2012-08-26
      • 2011-03-28
      • 2015-07-23
      • 1970-01-01
      相关资源
      最近更新 更多