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


Практическое руководство. Создание объекта WindowsPrincipal

Существует два способа создания объекта WindowsPrincipal в зависимости от того, должен ли программный код многократно проводить проверку на основании ролей или она должна быть проведена только один раз.

Если программный код должен проводить многократную проверку на основании ролей, то дополнительные издержки будут минимальными при использовании первого способа. Когда в программном коде требуется выполнить проверку на основании ролей только один раз, можно создать объект WindowsPrincipal, использовав второй способ.

Создание объекта WindowsPrincipal для многократной проверки

  1. Вызовите метод SetPrincipalPolicy для объекта AppDomain, возвращаемого статическим свойством AppDomain.CurrentDomain, передав ему значение перечисления PrincipalPolicy, которое указывает, какую политику необходимо создать. Допустимые значения: NoPrincipal, UnauthenticatedPrincipal и WindowsPrincipal. В следующем примере демонстрируется вызов этого метода.

    AppDomain.CurrentDomain.SetPrincipalPolicy(
        PrincipalPolicy.WindowsPrincipal);
    
    AppDomain.CurrentDomain.SetPrincipalPolicy( _
        PrincipalPolicy.WindowsPrincipal)
    
  2. После того как политика установлена, следует использовать статическое свойство Thread.CurrentPrincipal для извлечения участника, содержащего текущего пользователя Windows. Так как это свойство возвращает значение типа IPrincipal, результат необходимо привести к типу WindowsPrincipal. В следующем примере кода инициализируется новый объект WindowsPrincipal со значением участника, связанного с текущим потоком.

    WindowsPrincipal MyPrincipal = 
        (WindowsPrincipal) Thread.CurrentPrincipal;
    
    Dim MyPrincipal As WindowsPrincipal = _
        CType(Thread.CurrentPrincipal, WindowsPrincipal) 
    
  3. После создания объекта-участника можно использовать один из нескольких методов для того, чтобы проверить его. Дополнительные сведения см. в разделе Проверка безопасности на основе ролей.

Создание объекта WindowsPrincipal для однократной проверки

  1. Инициализируйте объект WindowsIdentity, вызвав статический метод WindowsIdentity.GetCurrent, который запрашивает текущую учетную запись Windows и помещает информацию об этой учетной записи в созданный объект идентификации. В следующем примере кода создается новый объект WindowsIdentity, который затем инициализируется со значением, соответствующим текущему пользователю, прошедшему проверку подлинности.

    WindowsIdentity MyIdentity = WindowsIdentity.GetCurrent();
    
    Dim MyIdentity As WindowsIdentity = WindowsIdentity.GetCurrent()
    
  2. Создайте новый объект WindowsPrincipal и передайте ему значение объекта WindowsIdentity, созданного на предыдущем этапе.

    WindowsPrincipal MyPrincipal = new WindowsPrincipal(MyIdentity);
    
    Dim MyPrincipal As New WindowsPrincipal(MyIdentity)
    
  3. После создания объекта-участника можно использовать один из нескольких методов для того, чтобы проверить его. Дополнительные сведения см. в разделе Проверка безопасности на основе ролей.

См. также

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

Объекты Principal и Identity