Aracılığıyla paylaş


Nasıl yapılır: GenericPrincipal ve GenericIdentity Nesneleri Oluşturma

Not

Bu makale Windows için geçerlidir.

ASP.NET Core hakkında bilgi için bkz . ASP.NET Core Güvenliğine Genel Bakış.

Sınıfını GenericIdentity , bir Windows etki alanından bağımsız olarak var olan bir yetkilendirme şeması oluşturmak için sınıfıyla GenericPrincipal birlikte kullanabilirsiniz.

GenericPrincipal nesnesi oluşturmak için

  1. Kimlik sınıfının yeni bir örneğini oluşturun ve saklamak istediğiniz adla başlatın. Aşağıdaki kod yeni bir GenericIdentity nesnesi oluşturur ve adıyla MyUserbaşlatır.

    Dim myIdentity As New GenericIdentity("MyUser")
    
    GenericIdentity myIdentity = new GenericIdentity("MyUser");
    
  2. GenericPrincipal sınıfının yeni bir örneğini oluşturun ve daha önce oluşturulan GenericIdentity nesnesiyle ve bu sorumluyla ilişkilendirılmasını istediğiniz rolleri temsil eden bir dize dizisiyle başlatın. Aşağıdaki kod örneği, yönetici rolünü ve kullanıcı rolünü temsil eden dize dizisini belirtir. GenericPrincipal daha sonra önceki GenericIdentity ve dize dizisiyle başlatılır.

    Dim myStringArray As String() = {"Manager", "Teller"}
    DIm myPrincipal As New GenericPrincipal(myIdentity, myStringArray)
    
    String[] myStringArray = {"Manager", "Teller"};
    GenericPrincipal myPrincipal = new GenericPrincipal(myIdentity, myStringArray);
    
  3. Sorumluyu geçerli iş parçacığına eklemek için aşağıdaki kodu kullanın. Bu, sorumlunun birkaç kez doğrulanması, uygulamanızda çalışan diğer kodlar tarafından doğrulanması veya bir nesne tarafından doğrulanması gereken durumlarda değerlidir PrincipalPermission . İş parçacığına eklemeden asıl nesne üzerinde rol tabanlı doğrulama gerçekleştirmeye devam edebilirsiniz. Daha fazla bilgi için bkz . Asıl Nesneyi Değiştirme.

    Thread.CurrentPrincipal = myPrincipal
    
    Thread.CurrentPrincipal = myPrincipal;
    

Örnek

Aşağıdaki kod örneğinde GenericPrincipal ve GenericIdentity örneğinin nasıl oluşturulacağı gösterilmektedir. Bu kod, bu nesnelerin değerlerini konsolda görüntüler.

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;
    }
}

Yürütürken, uygulama aşağıdakine benzer bir çıkış görüntüler.

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

Ayrıca bkz.