Роли, доступные с проверкой подлинности 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, где роли сопоставляются с группами пользователей. Во всяком случае, я не думаю, что можно сделать больше, чем перечислять группы окон, доступные на этом компьютере/в этом домене. Не уверен, что это помогает, но все, что я могу сказать, не имея представления о том, что вы пытаетесь сделать с указанным списком ролей.