.NET: Как искать пользователя в Active Directory?

Разобрался.

p.stock.out-of-stock {
    color: #ff0000 !important;
}

и

p.stock.in-stock {
    color: #ff0000 !important;
}

в пользовательский CSS и соответствующим образом корректируем шестнадцатеричный код.

Не знаю, как удалить мой вопрос, но, возможно, это поможет кому-то еще.

11
задан Community 23 May 2017 в 12:10
поделиться

2 ответа

Это работает на меня.

Необходимо смочь дифференцироваться между различными пользователями на различных контроллерах домена (т.е. домен/имя пользователя), потому что ldappaths будет отличаться. И согласно Вам Вы не заботитесь, потому что Вы не указываете ldappath.

Вы делаете важную персону о снятии домена / Пользователя. Идентификационные данные. Имя. но я не уверен, по поводу чего Вы волнуетесь, просто необходимо прервать строку в две половины и в первый раз, когда Вы встречаетесь '\', пора прервать.

и если Вам не нравится это, можно использовать "надлежащий путь": http://msdn.microsoft.com/en-us/library/ms973834.aspx

это хорошо также http://geekswithblogs.net/mhamilton/archive/2005/09/30/55621.aspx

      /// This is some imaginary code to show you how to use it

      Session["USER"] = User.Identity.Name.ToString();
      Session["LOGIN"] = RemoveDomainPrefix(User.Identity.Name.ToString()); // not a real function :D
      string ldappath = "LDAP://your_ldap_path";
      // "LDAP://CN=<group name>, CN =<Users>, DC=<domain component>, DC=<domain component>,..."


      Session["cn"] = GetAttribute(ldappath, (string)Session["LOGIN"], "cn");
      Session["displayName"] = GetAttribute(ldappath, (string)Session["LOGIN"], "displayName");
      Session["mail"] = GetAttribute(ldappath, (string)Session["LOGIN"], "mail");
      Session["givenName"] = GetAttribute(ldappath, (string)Session["LOGIN"], "givenName");
      Session["sn"] = GetAttribute(ldappath, (string)Session["LOGIN"], "sn");


/// working code

public static string GetAttribute(string ldappath, string sAMAccountName, string attribute)
    {
        string OUT = string.Empty;

        try
        {
            DirectoryEntry de = new DirectoryEntry(ldappath);
            DirectorySearcher ds = new DirectorySearcher(de);
            ds.Filter = "(&(objectClass=user)(objectCategory=person)(sAMAccountName=" + sAMAccountName + "))";

            SearchResultCollection results = ds.FindAll();

            foreach (SearchResult result in ds.FindAll())
            {
                OUT =  GetProperty(result, attribute);
            }
        }
        catch (Exception t)
        {
            // System.Diagnostics.Debug.WriteLine(t.Message);
        }

        return (OUT != null) ? OUT : string.Empty;
    }

public static string GetProperty(SearchResult searchResult, string PropertyName)
    {
        if (searchResult.Properties.Contains(PropertyName))
        {
            return searchResult.Properties[PropertyName][0].ToString();
        }
        else
        {
            return string.Empty;
        }
    }

Для домена/имени пользователя

    public static string GetDomain(string s)
    {
        int stop = s.IndexOf("\\");
        return (stop > -1) ?  s.Substring(0, stop + 1) : null;
    }

    public static string GetLogin(string s)
    {
        int stop = s.IndexOf("\\");
        return (stop > -1) ? s.Substring(stop + 1, s.Length - stop - 1) : null;
    }

Для стиля username@domain

   public static string GetDomain(string s) //untested
    {
        int stop = s.IndexOf("@");
        return (stop > -1) ? s.Substring(stop + 1, s.Length - stop - 1) : null;
    }


    public static string GetLogin(string s) //untested
    {
        int stop = s.IndexOf("@");
        return (stop > -1) ?  s.Substring(0, stop) : null;
    }
5
ответ дан 3 December 2019 в 11:04
поделиться

Я не знаю о чистом методе .NET. Но можно использовать CredUIParseUserName win32.

2
ответ дан 3 December 2019 в 11:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: