Разработка страницы поиска пользователей в asp.net MVC 4 с использованием Activedirectory

Я занимаюсь разработкой приложения ASp.net MVC 4 Intranet. Поэтому, когда я вхожу в систему, я вижу, как отображается моя учетная запись. Теперь для авторизации учетной записи я разработал пользовательский поставщик авторизации, перейдя по ссылке ниже: http://www.codeproject.com/Articles/607392/Custom-Role-Providers

Теперь моя проблема в том, что после первоначальной авторизации я добавляю себя в роль суперадмина, которая имеет доступ к Index.cstml, где есть текстовое поле и кнопка поиска.

в основном здесь, на этой странице, я хочу найти пользователя в активном каталоге и отобразить его, чтобы я мог назначить пользователю некоторые роли. Как я могу это сделать? Пожалуйста, предоставьте код, как подключиться к Active Directory, где предоставить строку подключения для LDAP и метод excat, который поможет мне найти пользователя в активном каталоге и отобразить его в представлении индекса.

Вот что я попробовал: Entities: ADuser->property UserLoginName,UserDispalyName Модель: есть метод, который возвращает пользователя-администратора из AD и добавляет его в открытый класс сущности ADUserModel {

    public List<ADUser> GetUserFromAD(string name) //Get Network Users (AD)
    {
        //ArrayList searchUser = new ArrayList();
        var domainContext = new PrincipalContext(ContextType.Domain);
        var groupPrincipal = GroupPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, "Domain Users");
        UserPrincipal user = new UserPrincipal(domainContext);
        user.Enabled = true;
        user.Name = name + "*";

        PrincipalSearcher pS = new PrincipalSearcher();
        pS.QueryFilter = user;

        PrincipalSearchResult<Principal> results = pS.FindAll();
        var list = new List<ADUser>();


        //searchUser.Add(results);
        foreach (var item in results)
        {
            var users = new ADUser();
            users.UserLoginName = item.SamAccountName;
            users.UserDisplayName = item.DisplayName;
            list.Add(users);
            //searchUser.Add(users);
        }

        return list;

    }
}

Контроллер: есть метод действия, который будет возвращать представление

открытый класс ManageUsersController: Controller { // // GET: /ManageUsers/

    public ActionResult Search(string searchString)
    {
        ADUserModel model = new ADUserModel();
        var list = new List<ADUser>();
        if (searchString != null)
        {
            list = model.GetUserFromAD(searchString);
            return View("Search");
        }
        else
        {
            return View("Search");
        }
    }
}

Вид: Search.cshtml

 @model IEnumerable<FMSKendoUI.Entities.ADUser>
@{
   ViewBag.Title = "Search";
  }
@Html.BeginForm("Search","ManageUsers",FormMethod.Get)
{
@Html.TextBox("Search") <input type="submit" value="Search" />
}

@if (Model.Count() != 0)
{

    @foreach (FMSKendoUI.Entities.ADUser model in Model)
    {

            @Html.DisplayFor(m => model.UserLoginName)
            @Html.DisplayFor(m => model.UserDisplayName)

    }


}

Но моя проблема: во время загрузки первой страницы мне понадобятся только текстовое поле и кнопка поиска. и при нажатии кнопки поиска мне нужно вызвать метод поиска контроллера.

Поскольку в первый раз моя сущность является нулевой, это дает мне нулевое исключение. моя сущность загружается только после того, как я предоставил строку поиска и вызвал метод модели.

Я не могу этого добиться. Пожалуйста помоги мне с этим.

0 ответов

Другие вопросы по тегам