Создание Windows-приложений на основе Visual C#



Использование объектов GenericIdentity и GenericPrincipal


Классы GenericPrincipal совместно с классом GenericIdentity применяются для реализации ролевой безопасности, не зависящей от системы безопасности Windows. Например, у пользователя запрашиваются имя и пароль, которые затем сверяются с данными, хранящимися в приложении или локальной базе данных, и, после успешной проверки, создаются объекты GenericPrincipal и GenericIdentity на основании введенных значений.

Для реализации ролевой безопасности на основе объектов классов GenericPrincipal и GenericIdentity необходимо выполнить следующие действия:

  • создать новый объект класса GenericIdentity и инициализировать его именем пользователя;
  • создать новый объект класса GenericPrincipal и инициализировать его только что созданным объектом класса
  • nericIdentity и строковым массивом, содержащим роли пользователя;
  • прикрепить созданный объект класса GenericPrincipal к текущему потоку. Прикрепление к текущему потоку необходимо для осуществления последующей проверки полномочий пользователя в коде приложения.

Синтаксис этих действий следующий:

// Создаем и инициализируем именем пользователя // объект класса GenericIdentity GenericIdentity identity = new GenericIdentity("Username"); // Создаем строковый массив, содержащий роли пользователя. string[] userRoles = new string[]{"Administrator", "PowerUser", "GuestUser"}; // Создаем объект класса GenericPrincipal и инициализируем его // объектом класса GenericIdentity identity и строковым массивом с // ролями. GenericPrincipal principal = new GenericPrincipal(identity, userRoles); // Прикрепляем объект роли к текущему процессу. // Этот и все дочерние процессы будут иметь данную роль. Thread.CurrentPrincipal = principal;

Создайте новое консольное приложение и назовите его GenericIdentityandPrincipal . Далее привожу листинг с комментариями:

using System; using System.Threading; using System.Security.Principal;

namespace GenericIdentityandPrincipal { /// <summary> /// Summary description for Class1. /// </summary> class Class1 { [STAThread] static void Main(string[] args) { // Создаем и прикрепляем объект роли. CreateGenericPrincipalAndIdentity(Roles.PowerUser); // Вводим один из способов осуществления проверки роли. if(Thread.CurrentPrincipal.IsInRole("User")) { Console.WriteLine("У вас нет прав для работы с этим приложением"); } else if(Thread.CurrentPrincipal.IsInRole("PowerUser")) { Console.WriteLine("Добро пожаловать, {0}. Ваша роль — Продвинутый пользователь", Thread.CurrentPrincipal.Identity.Name); } else // Administrator { Console.WriteLine("Добро пожаловать, {0}. Ваша роль — Администратор", Thread.CurrentPrincipal.Identity.Name); } }




Содержание  Назад  Вперед