Поделиться через


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

Обновлен: Ноябрь 2007

Декларативные требования для разрешения PrincipalPermission работают аналогично декларативным требованиям для разрешений доступа к коду. Требования могут применяться на уровне класса или к отдельным методам, свойствам или событиям. Если декларативное требование применяется и на уровне класса, и на уровне члена, то декларативное требование, применяемое к члену, переопределяет (или замещает) требование на уровне класса.

В следующем примере кода демонстрируется измененная версия метода PrivateInfo из примера, приведенного в предыдущем разделе. Эта версия использует декларативную безопасность. Метод PrincipalPermissionAttribute определяет участника, который необходим текущему потоку для вызова метода. Следует просто передать SecurityAction.Demand с необходимыми именем и ролью.

      [PrincipalPermissionAttribute(SecurityAction.Demand, Name = "MyUser", Role = "User")]
      public static void PrivateInfo()
      {   
         //Print secret data.
         Console.WriteLine("\n\nYou have access to the private data!");
      }
    Public Shared Sub _
    <PrincipalPermissionAttribute(SecurityAction.Demand, Name := "MyUser", Role := "User")> _
    PrivateInfo()
    
        'Print secret data.
        Console.WriteLine(ControlChars.CrLf + "You have access to the private data!")
    End Sub

Этот метод создает исключение безопасности, если текущий поток не содержит корректного участника. Если пользователь вводит значение 1, то будет вызван метод PrivateInfo и на консоль будет выведено следующее сообщение.

You have access to the private data!

См. также

Основные понятия

Проверка безопасности на основе ролей

Ссылки

PrincipalPermission