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



Приложение CustomSecurity — использование собственной технологии ролевой безопасности


Мы обсудили теоретические основы безопасности .NET Framework, займемся теперь практическим использованием этих концепций. Создайте новое Windows-приложение и назовите его CustomSecurity. При запуске приложение будет требовать авторизацию пользователя и, в зависимости от его роли, предоставлять разные права доступа. В главной форме будет отображаться список всех пользователей и предоставляться возможность изменять роль пользователей. Список пользователей будет содержаться в файле Users.xml, для его создания в окне щелкаем правой кнопкой мыши в окне Solution Explorer и выбираем Add/Add New Item… . В появившемся окне выбираем XML File. Создадим нескольких пользователей, относящихся к трем группам — admin, manager, operator:

<?xml version="1.0" encoding="utf-8" ?> <users> <user name="admin" id="1" role="admin" /> <user name="manager" id="2" role="manager" /> <user name="accountant" id="3" role="accountant" /> <user name="student1" id="4" role="operator" /> <user name="student2" id="5" role="operator" /> <user name="student3" id="6" role="operator" /> </users>

Для просмотра и редактирования данных в виде таблицы щелкните на кнопке

ryjgrf
, расположенной внизу на панели. Закончив редактирование, скопируйте файл Users.xml из папки проекта в папку bin/Debug.

Вынесем логику определения личности и роли пользователей в отдельные классы — CustomIdentity.cs и CustomPrincipal.cs. Для добавления в проект отдельных классов щелкаем в окне Solution Explorer правой кнопкой и выбираем Add/ Add Class… . Далее привожу листинг CustomIdentity.cs c комментариями:

using System; using System.Security.Principal; using System.Xml;

namespace CustomSecurity { /// <summary> /// Класс CustomIdentity , описывающий "личность", наследует от класса IIdentity /// </summary> public class CustomIdentity : IIdentity { //Вводим переменные аутентификации private bool _isAuth; private string _name; private string _authType; private int _id; /// <summary> /// Конструктор. /// </summary> public CustomIdentity() { this._isAuth = false; this._authType = String.Empty; this._name = String.Empty; this._id = -1; } /// <summary> ///Создаем конструктор, принимающий имя пользователя. /// </summary> /// <param name="userName">Имя пользователя.</param> public CustomIdentity(string userName) { this._id = this.AuthUserName(userName); this._name = userName; this._isAuth = true; this._authType = "Частный тип аутентификации."; } /// <summary> /// Определяем уникальный идентификатор пользователя. /// </summary> public int ID { get { return this._id; } } #region IIdentity Members /// <summary> /// Проверка аутентификации пользователя. /// </summary> public bool IsAuthenticated { get { // Реализуем свойство интерфейса. return this._isAuth; } } /// <summary> /// Определяем имя пользователя. /// </summary> public string Name { get { // Реализуем свойство интерфейса. return this._name; } } /// <summary> /// Определяем тип аутентификации. /// </summary> public string AuthenticationType { get { // Реализуем свойство интерфейса. return this._authType; } }




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