Delen via


Procedure: GenericPrincipal- en GenericIdentity-objecten maken

Notitie

Dit artikel is van toepassing op Windows.

Zie Overzicht van ASP.NET Core Security voor informatie over ASP.NET Core.

U kunt de GenericIdentity klasse in combinatie met de GenericPrincipal klasse gebruiken om een autorisatieschema te maken dat onafhankelijk is van een Windows-domein.

Een GenericPrincipal-object maken

  1. Maak een nieuw exemplaar van de identiteitsklasse en initialiseer deze met de naam die u wilt opslaan. Met de volgende code wordt een nieuw GenericIdentity-object gemaakt en geïnitialiseerd met de naam MyUser.

    Dim myIdentity As New GenericIdentity("MyUser")
    
    GenericIdentity myIdentity = new GenericIdentity("MyUser");
    
  2. Maak een nieuw exemplaar van de klasse GenericPrincipal en initialiseer deze met het eerder gemaakte GenericIdentity-object en een matrix met tekenreeksen die de rollen vertegenwoordigen die u aan deze principal wilt koppelen. In het volgende codevoorbeeld wordt een matrix met tekenreeksen opgegeven die een beheerdersrol en een gebruikersrol vertegenwoordigen. De GenericPrincipal wordt vervolgens geïnitialiseerd met de vorige GenericIdentity en de tekenreeksmatrix.

    Dim myStringArray As String() = {"Manager", "Teller"}
    DIm myPrincipal As New GenericPrincipal(myIdentity, myStringArray)
    
    String[] myStringArray = {"Manager", "Teller"};
    GenericPrincipal myPrincipal = new GenericPrincipal(myIdentity, myStringArray);
    
  3. Gebruik de volgende code om de principal aan de huidige thread te koppelen. Dit is waardevol in situaties waarin de principal meerdere keren moet worden gevalideerd, moet deze worden gevalideerd door andere code die wordt uitgevoerd in uw toepassing of moet worden gevalideerd door een PrincipalPermission object. U kunt nog steeds validatie op basis van rollen uitvoeren op het principal-object zonder het aan de thread te koppelen. Zie Een principal-object vervangen voor meer informatie.

    Thread.CurrentPrincipal = myPrincipal
    
    Thread.CurrentPrincipal = myPrincipal;
    

Opmerking

In het volgende codevoorbeeld ziet u hoe u een exemplaar van een GenericPrincipal en een GenericIdentity maakt. Met deze code worden de waarden van deze objecten weergegeven in de console.

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

Wanneer de toepassing wordt uitgevoerd, wordt uitvoer weergegeven die er ongeveer als volgt uitziet.

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

Zie ook