2014-02-11 10 views
0

Я работаю над бизнес-логикой для WPF-приложения. Перед запуском приложения мне нужно доказать, что CurrentUser находится в ActiveDirectory специального домена, и если он там, мне нужно выяснить, в каких ролях находится текущий пользователь. Текущий пользователь и его существование в AD работают нормально, но у меня есть проблемы, чтобы выяснить роли.Как получить все роли для текущего пользователя?

Я пробовал с:

using System.Web.Security; 

Roles.GetRolesForUser(currentuser); 

, но проблема в том, что я должен включить Role-Management, так что я писал выше код:

Roles.Enabled = true; 

но есть еще проблема с этим ->System.InvalidOperationException;

Вот весь код (testversion):

string currentuser = Environment.UserName; 
string currentmachine = Environment.MachineName; 

if (DirectoryEntry.Exists(string.Format("WinNT://{0}/{1}", currentmachine, currentuser))) 
{ 
    Console.WriteLine("it's working\n"); 


    Roles.Enabled = true; 
    Console.WriteLine(Roles.GetRolesForUser(currentuser)); 
} 
else 
{ 
    Console.WriteLine("it's not working"); 
} 

Это проблема с директивой по использованию? Или есть другие возможности проверить, в каких ролях пользователь?

спасибо большое.

ответ

0

Может быть, это может помочь вам: Active Directory - Roles of a user

В этом посте используется System.DirectoryServices.AccountManagement-пространство имен. Я думаю, что это лучший способ для WPF-приложения и Roles.GetRolesForUser, похоже, используется в ASP-Web-приложениях.

Надеюсь, это может вам помочь.

+0

Я использую эти директивы: 'using System.DirectoryServices.AccountManagement; с использованием System.DirectoryServices.ActiveDirectory; с использованием System.DirectoryServices.Protocols; с использованием System.DirectoryServices; ' –

+0

спасибо вам - пришлось попробовать несколько вещей с доменом, но теперь он работает нормально. –

0

Попробуйте это, если вы также используете членство

var user = Membership.GetUser("WhateverUsername"); 
string [] roles = Roles.GetRolesForUser(user.UserName); 

Если нет, то просто укажите имя пользователя:

string [] roles = Roles.GetRolesForUser("WhateverUsename"); 

Это позволит получить роли для пользователя вы предоставили. Надеюсь, поможет.

+0

есть еще проблема с 'System.InvalidOperationException,' –

+0

Исключение говорит: 'Этот метод может быть вызван только во время фазы инициализации до apllication starts.' –

+0

Попробуйте добавить их в области AppSettings вашего конфигурационного файла <добавить key = "enableSimpleMembership" value = "false" /> Dumisani

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