Роли, доступные с проверкой подлинности Windows
Я пытаюсь добавить проверку подлинности ролей в действие в контроллере в приложении ASP.NET MVC. Код выглядит примерно так:
[Authorize(Roles = "SomeRoleName")]
public ActionResult Index()
{
bool inRole = User.IsInRole("Admin");
Если я удалю атрибут Authorize и поставлю точку останова в последней строке в этом примере кода, есть ли способ проверить объекты и выяснить, какие роли доступны?
например. Я вызываю User.IsInRole( "Admin" ) в окне Immediate, и это даст мне значение true/false. Как я могу получить доступ к коллекции доступных ролей?
Ответы
Ответ 1
Если вам не нужно делать это программно, но вы пытаетесь определить правильные группы/роли Windows, которые необходимо указать, вы можете использовать это из командной строки:
C:\> net group /domain (lists all Roles in the domain)
C:\> net user <username> /domain (lists info, including roles for a user)
В противном случае вам нужно будет запросить часть LDAP в Active Directory или использовать что-то в разделе DirectoryServices.
Взгляните на эти веб-сайты, чтобы получить доступ к Active Directory через С#:
Ответ 2
Добавьте это в свой web.config в system.web:
<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider"/>
Затем вы можете использовать:
string[] arr = Roles.GetRolesForUser(User.Identity.Name);
или
string[] arr = Roles.GetRolesForUser();
![введите описание изображения здесь]()
Ответ 3
Вы можете использовать различные методы в классе RoleProvider в System.Web.Security.Roles.Provider.
Смотрите это для более: Поставщик ролей
Ответ 4
Я предполагаю, что вы не используете поставщика роли здесь, но возвращаетесь к базовым функциям WindowsPrincipal, где роли сопоставляются с группами пользователей. Во всяком случае, я не думаю, что можно сделать больше, чем перечислять группы окон, доступные на этом компьютере/в этом домене. Не уверен, что это помогает, но все, что я могу сказать, не имея представления о том, что вы пытаетесь сделать с указанным списком ролей.