Каков наилучший способ получить значение того, какой пользователь вошел в систему? - PullRequest
0 голосов
/ 24 июня 2010

У меня есть приложение Windows form, в которое пользователи могут войти.Приложение одинокое и не соединяется ни с чем и ни с кем.

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

А не такКошерный способ сделать это - просто передать идентификатор userType в конструктор Form и в соответствии с этим .Enable = false;кнопки, на которые у них нет прав доступа.

Спасибо!

Ответы [ 2 ]

3 голосов
/ 24 июня 2010

Если вам нужен идентификатор текущего пользователя Windows (т.е. пользователя, под которым запущено приложение), есть два способа его получить:

  1. Установив AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal); в своем стартапе, вы можете использовать Thread.CurrentPrincipal для получения участника безопасности пользователя.
  2. Вы можете использовать WindowsIdentity.GetCurrent(), чтобы получить личность текущего пользователя. Затем вы можете создать субъект безопасности, используя new WindowsPrincipal(identity).

Оба они эквивалентны, и вы получите участника безопасности , который имеет IsInRole метод, который можно использовать для проверки разрешений.

0 голосов
/ 24 июня 2010

Используйте класс WindowsIdentity для получения идентификатора пользователя, который находится в System.Security.Principal.WindowsIdentity.

WindowsIdentity current = WindowsIdentity.GetCurrent();
Console.WriteLine("Name:" + current.Name);

Используйте класс WindowsPrincipal для получения ролей пользователей, который находится в System.Security.Principal.WindowsPrincipal.

WindowsIdentity current = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(current);

if (principal.IsInRole("your_role_here")
{
Console.WriteLine("Is a member of your role");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...