从活动目录搜索并自动完成用户名到 ASP.net 核心

问题描述

我正在尝试从活动目录中列出并自动完成用户名。 有人可以查看我的代码并告诉我有什么问题吗? 如果问题错了,请见谅。

查看

<input asp-for="User.Username" value="@ViewBag.Username" class="form-control" data-url="/ajax/user" />
<span asp-validation-for="User.Username" class="text-danger"></span>

//script to autocomplete
<script>
    _af.push(() => {
        $('#User_Username').autoComplete();
    });
</script>

第一种方法

[HttpPost] //this to pull the username from AD
        public JsonResult findit(string prefixText)
        {
            DirectoryEntry directory = new DirectoryEntry("LDAP://DC=x,DC=y");
            string filter = "(&(name=" + prefixText + "*))";
            string[] strCats = { "name" };
            List<string> items = new List<string>();
            DirectorySearcher dirComp = new DirectorySearcher(directory,filter,strCats,SearchScope.Subtree);
            SearchResultCollection results = dirComp.FindAll();
            foreach (SearchResult result in results)
            {
                foreach (DictionaryEntry prop in result.Properties)
                {
                    if (prop.Key.Equals("name"))
                    {
                        System.Collections.IEnumerable propsEnum = prop.Value as System.Collections.IEnumerable;
                        foreach (object individualValue in propsEnum)
                        {
                            if (individualValue.ToString().IndexOf(prefixText) != 0)
                            {
                                items.Add(individualValue.ToString());
                            }
                        }
                    }
                }
            }

            return Json(items.ToArray();
        }

第二种方法

        public async Task<IActionResult> Create(IFormCollection col)
        {
                    string username = col["user.username"].ToString().normalize();
                    var testa = findit(username);
                    var user = _context.Users.FirstOrDefault(x => x.normalizedUsername = testa);//here the issue                     
                    if (user == null)
                    {
                        user = new User
                        {
                            DateCreated = DateTime.Now,normalizedUsername = username.normalize(),Username = $"{username[0].ToString().Trim().toupper()}{username.Substring(1)}"
                        };
                        _context.Users.Add(user);
                        _context.SaveChanges();
                    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)