Книга: C# для профессионалов. Том II

Система безопасности на основе декларативной роли

Система безопасности на основе декларативной роли

Так же, как в случае с системой безопасности доступа к коду, можно реализовать запросы безопасности на основе ролей ("пользователь должен быть в группе Administrators"), используя обязательные запросы (см. предыдущий раздел), или использовать атрибуты. Возможно декларативное определение требований к полномочию на уровне класса в таком виде:

using System;
using System.Security;
using System.Security.Principal;
using System.Security.Permissions;
namespace SecurityApp3 {
 class Class1 {
  static void Main(string[] args) {
   AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
   try {
    ShowMessage();
   } catch (SecurityException exception) {
    Console.WriteLine(
     "Security exception caught (" + exception.Message + ")");
    Console.WriteLine(
     "The current principal must be in the local"
     + "Users group");
   }
  }
  (PrincipalPermissionAttribute(SecurityAction.Demaid, Role =
   "BUILTINUsers"));
  static void ShowMessage() {
   Console.WriteLine("The current principal is longed in locally");
   Console.WriteLine("they are a member of the local Users group)");
  }
 }
}

Метод ShowMessage() будет порождать исключение, если приложение выполняется не в контексте пользователя из группы локальных Users в Windows 2000. Что касается приложений Web, то учетная запись, под которой выполняется код ASP.NET, должна быть в группе, хотя в реальном мире определенно будут избегать добавления этой учетной записи в группу администраторов.

Если выполнить приведенный выше код с помощью учетной записи в локальной группе Users, то вывод будет таковым:

The current principal is logged in locally
(they are a member of the local Users group)

Дополнительную информацию о системе безопасности на основе ролей в .NET можно найти в документации MSDN для пространства имен System.Security.Principal.

Оглавление книги


Генерация: 2.191. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз