Разработка страницы поиска пользователей в 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)
}
}
Но моя проблема: во время загрузки первой страницы мне понадобятся только текстовое поле и кнопка поиска. и при нажатии кнопки поиска мне нужно вызвать метод поиска контроллера.
Поскольку в первый раз моя сущность является нулевой, это дает мне нулевое исключение. моя сущность загружается только после того, как я предоставил строку поиска и вызвал метод модели.
Я не могу этого добиться. Пожалуйста помоги мне с этим.