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




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


#endregion /// <summary> /// Проверяем, существует ли имя пользователя в базе данных — файле XML. /// </summary> /// <param name="name">Имя пользователя.</param> /// <returns>ID пользователя.</returns> private int AuthUserName(string name) { // Считываем и сравниваем имя пользователя. XmlTextReader xmlReader = new XmlTextReader("Users.xml"); xmlReader.WhitespaceHandling = WhitespaceHandling.None; while(xmlReader.Read()) { if(xmlReader["name"] == name) return Int32.Parse(xmlReader["id"]); } // Если пользователь не найден, генерируем исключение. throw new System.Security.SecurityException(String.Format("Пользователь {0} не найден в базе данных.", name)); } } }

Листинг 10.5.

Листинг CustomPrincipal.cs:

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

namespace CustomSecurity { /// <summary> /// Класс CustomPrincipal, описывающий роль, наследует от класса IPrincipal /// </summary> public class CustomPrincipal :IPrincipal { private CustomIdentity _indentity; private string _role; /// <summary> /// Конструктор. /// </summary> /// <param name="identity">Определяем личность пользователя.</param> public CustomPrincipal(CustomIdentity identity) { // Инициализируем личность this._indentity = identity; // Инициализируем переменную только один раз. Если роль изменится в процессе выполнения приложения, то // изменения вступят в силу только после перезагрузки приложения. this._role = this.GetUserRole(); } #region IPrincipal Members /// <summary> /// Свойство личности пользователя. /// </summary> public IIdentity Identity { get { // Реализуем свойство интерфейса. return this._indentity; } } /// <summary> /// Проверяем, прнадлежит ли пользователь к заданной роли. /// </summary> /// <param name="role">Роль.</param> /// <returns></returns> public bool IsInRole(string role) { // Реализуем метод интерфейса. return role == this._role;




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