2009-05-28 7 views
11

Я пытаюсь добавить аутентификацию Роли в действие в контроллере в приложении ASP.NET MVC. Код выглядит примерно так:Роли, доступные с проверкой подлинности Windows

[Authorize(Roles = "SomeRoleName")] 
public ActionResult Index() 
{ 
    bool inRole = User.IsInRole("Admin"); 

Если удалить атрибут Авторизовать и поставить точку останова на последней строке в этом примере кода, есть ли способ, что я могу осмотреть объекты и выяснить, какие роли доступны ?

например. Я вызываю User.IsInRole («Admin») в окне Immediate, и это даст мне истинное/ложное значение. Как получить доступ к коллекции доступных ролей?

+0

Вы можете уточнить ваш вопрос, если вы ищете для ролей, назначенных для текущего пользователя или всех возможных ролей, которые пользователь мог бы принадлежать? –

ответ

15

Если вам не нужно делать это программно, но вы пытаетесь определить правильные группы 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 с помощью C#:

+1

Запустите 'gpresult/Z' из командной строки ... – ErikE

+1

Ну, ссылка howto приведет меня к« китайским датам »сейчас. –

+0

В случае, если кто-то еще бродит здесь. Ссылка на «Howto: (почти) все в Active Directory через C# - Codeproject»: https://www.codeproject.com/Articles/18102/Howto-Almost-Everything-In-Active-Directory-via-C –

2

Вы можете использовать различные методы в классе RoleProvider в System . .Web.Security.Roles.Provider

Смотрите это более: Role Provider

1

Я предполагаю, что вы не используете провайдера роль здесь, но отступая от базовой функциональности WindowsPrincipal, где карте роли для групп пользователей. Во всяком случае, я не думаю, что можно сделать больше, чем перечислять группы окон, доступные на этом компьютере/в этом домене. Не уверен, что это помогает, но это все, что я могу сказать, представление о том, что вы пытаетесь сделать с указанным списком ролей.

7

Добавьте это в web.config под system.web:

<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider"/> 

Тогда вы можете использовать:

string[] arr = Roles.GetRolesForUser(User.Identity.Name); 

или:

string[] arr = Roles.GetRolesForUser(); 

enter image description here

+1

спасибо, это дает очень быстро все локальные и доменные роли, например BUILTIN \\ Administrators group –

Смежные вопросы