У меня есть веб-приложение asp.net, как проверить, что текущий зарегистрированный пользователь (клиент) находится в определенной группе Active Directory. Спасибо
веб-приложение asp.net - проверьте, существует ли пользователь в группе Active Directory
comment
Отличный ответ, но для справки в будущем при реализации получена {Неизвестная ошибка (0x80005000)}. Исправлено добавлением домена в следующую строку: var pc = new PrincipalContext (ContextType.Domain, Environment.UserDomainName);
- person Paul Blackwell   schedule 07.02.2013
Ответы (2)
Попробуйте следующий метод. Просто измените его по своему усмотрению ...
public List<string> GetGroupNames(string userName)
{
var pc = new PrincipalContext(ContextType.Domain);
var src = UserPrincipal.FindByIdentity(pc, userName).GetGroups(pc);
var result = new List<string>();
src.ToList().ForEach(sr => result.Add(sr.SamAccountName));
return result;
}
person
Leniel Maccaferri
schedule
30.05.2011
Привет, Лениэль, спасибо за быстрый ответ. Я просто скопировал ваш код, запущенный в простом веб-приложении. это дало ошибку - {Неизвестная ошибка (0x80005000)}, я что-то упустил?
- person Yogesh; 30.05.2011
@Yogesh: проверьте это: lansweeper.com/ forum / Это довольно обширная ошибка. Если вы поищете эту Неизвестную ошибку в Google, вы получите множество возможных проблем ...
- person Leniel Maccaferri; 30.05.2011
Для этого требуется .NET 3.5 или выше - не работает с 2.0 или 3.0. Также: пользователь, под которым запущено веб-приложение, должен иметь разрешение хотя бы на чтение AD.
- person marc_s; 30.05.2011
@Yogesh: где (в какой строке кода) возникает эта ошибка при отладке через ??
- person marc_s; 30.05.2011
var src = UserPrincipal.FindByIdentity (pc, userName) .GetGroups (pc);
- person Yogesh; 30.05.2011
Я создал одну группу AD (локальную) и назначил пользователя, пытаясь получить эту группу, я думаю, что это то место, где я потерял. Пожалуйста, поправьте меня, если я ошибаюсь, группа AD должна находиться в домене, а не в локальном ящике.
- person Yogesh; 30.05.2011
теперь я использовал существующую группу, членом которой я являюсь, и я использовал эту строку кода flag = User.IsInRole (ADGroupName); .... Бинго! и это сработало
- person Yogesh; 30.05.2011
Попробуйте это (работает только в ASP.NET, но аналогичные вызовы доступны для приложений Windows)
if (HttpContext.Current.User.IsInRole("RoleName"))
{
return true;
}
else
{
return false;
}
Надеюсь, это поможет
Харви Сэзер
person
Harv
schedule
30.05.2011