Бөлісу құралы:


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

Примечание.

Эта статья применима к Windows.

Дополнительные сведения о ASP.NET Core см. в разделе "Общие сведения о ASP.NET основной безопасности".

Класс можно использовать GenericIdentity вместе с GenericPrincipal классом для создания схемы авторизации, которая существует независимо от домена Windows.

Создание объекта GenericPrincipal

  1. Создайте новый экземпляр класса identity и инициализируйте его с необходимым именем. Следующий код создает новый объект GenericIdentity и инициализирует его с именем MyUser.

    Dim myIdentity As New GenericIdentity("MyUser")
    
    GenericIdentity myIdentity = new GenericIdentity("MyUser");
    
  2. Создайте новый экземпляр класса GenericPrincipal и инициализируйте его с ранее созданным объектом GenericIdentity и массивом строк, представляющими роли, которые требуется связать с этим участником. В следующем примере кода задается массив строк, представляющих роль администратора и роль пользователя. Затем GenericPrincipal инициализируется с предыдущим GenericIdentity и массивом строк.

    Dim myStringArray As String() = {"Manager", "Teller"}
    DIm myPrincipal As New GenericPrincipal(myIdentity, myStringArray)
    
    String[] myStringArray = {"Manager", "Teller"};
    GenericPrincipal myPrincipal = new GenericPrincipal(myIdentity, myStringArray);
    
  3. Для подключения участника к текущему потоку используйте следующий код. Это полезно в ситуациях, когда субъект должен проверяться несколько раз, он должен быть проверен другим кодом, запущенным в приложении, или он должен быть проверен PrincipalPermission объектом. Объект Principal по-прежнему можно проверять на основании ролей без подключения его к потоку. Дополнительные сведения см. в разделе Замена объекта Principal.

    Thread.CurrentPrincipal = myPrincipal
    
    Thread.CurrentPrincipal = myPrincipal;
    

Пример

В следующем примере кода показано, как создать экземпляр объекта GenericPrincipal и GenericIdentity. Данный код выводит значения этих объектов на консоль.

Imports System.Security.Principal
Imports System.Threading

Public Class Class1

    Public Shared Sub Main()
        ' Create generic identity.
        Dim myIdentity As New GenericIdentity("MyIdentity")

        ' Create generic principal.
        Dim myStringArray As String() =  {"Manager", "Teller"}
        Dim myPrincipal As New GenericPrincipal(myIdentity, myStringArray)

        ' Attach the principal to the current thread.
        ' This is not required unless repeated validation must occur,
        ' other code in your application must validate, or the
        ' PrincipalPermission object is used.
        Thread.CurrentPrincipal = myPrincipal

        ' Print values to the console.
        Dim name As String = myPrincipal.Identity.Name
        Dim auth As Boolean = myPrincipal.Identity.IsAuthenticated
        Dim isInRole As Boolean = myPrincipal.IsInRole("Manager")

        Console.WriteLine("The name is: {0}", name)
        Console.WriteLine("The isAuthenticated is: {0}", auth)
        Console.WriteLine("Is this a Manager? {0}", isInRole)

    End Sub

End Class
using System;
using System.Security.Principal;
using System.Threading;

public class Class1
{
    public static int Main(string[] args)
    {
    // Create generic identity.
    GenericIdentity myIdentity = new GenericIdentity("MyIdentity");

    // Create generic principal.
    String[] myStringArray = {"Manager", "Teller"};
    GenericPrincipal myPrincipal =
        new GenericPrincipal(myIdentity, myStringArray);

    // Attach the principal to the current thread.
    // This is not required unless repeated validation must occur,
    // other code in your application must validate, or the
    // PrincipalPermission object is used.
    Thread.CurrentPrincipal = myPrincipal;

    // Print values to the console.
    String name =  myPrincipal.Identity.Name;
    bool auth =  myPrincipal.Identity.IsAuthenticated;
    bool isInRole =  myPrincipal.IsInRole("Manager");

    Console.WriteLine("The name is: {0}", name);
    Console.WriteLine("The isAuthenticated is: {0}", auth);
    Console.WriteLine("Is this a Manager? {0}", isInRole);

    return 0;
    }
}

Во время выполнения приложение выводит примерно следующие сведения.

The Name is: MyIdentity
The IsAuthenticated is: True
Is this a Manager? True

См. также