Freigeben über


Gewusst wie: Erstellen von GenericPrincipal-Objekten und GenericIdentity-Objekten

Aktualisiert: November 2007

Sie können die GenericIdentity-Klasse zusammen mit der GenericPrincipal-Klasse verwenden, um ein von einer Windows NT- oder Windows 2000-Dom äne unabhängiges Autorisierungsschema zu erstellen.

So erstellen Sie ein GenericPrincipal-Objekt

  1. Erstellen Sie eine neue Instanz der Identitätsklasse, und initialisieren Sie diese mit dem Namen, der in der Instanz abgelegt werden soll. Im folgenden Code wird ein neues GenericIdentity-Objekt erstellt und mit dem Namen MyUser initialisiert.

    Dim MyIdentity As New GenericIdentity("MyUser")
    
    GenericIdentity MyIdentity = new GenericIdentity("MyUser");
    
  2. Erstellen Sie eine neue Instanz der GenericPrincipal-Klasse. Initialisieren Sie sie mit dem zuvor erstellten GenericIdentity-Objekt und einem Zeichenfolgenarray, das die diesem Prinzipal zuzuordnenden Rollen darstellt. Im folgenden Codebeispiel wird ein Zeichenfolgenarray definiert, dessen Zeichenfolgen eine Administrator- und eine Benutzerrolle darstellen. Das GenericPrincipal wird anschließend mit der vorherigen GenericIdentity sowie dem Zeichenfolgenarray initialisiert.

    Dim MyStringArray As String() = {"Manager", "Teller"}
    DIm MyPrincipal As New GenericPrincipal(MyIdentity, MyStringArray)
    
    String[] MyStringArray = {"Manager", "Teller"};
    GenericPrincipal MyPrincipal = new GenericPrincipal(MyIdentity, MyStringArray);
    
  3. Verwenden Sie folgenden Code, um den Prinzipal an den aktuellen Thread anzufügen. Dies ist dann hilfreich, wenn der Principal mehrmals bzw. durch anderen in der Anwendung ausgeführten Code oder durch ein PrincipalPermission-Objekt geprüft werden muss. Sie können auch eine rollenbasierte Prüfung für das Principalobjekt durchführen, ohne es an den Thread anzufügen. Weitere Informationen finden Sie unter Ersetzen eines Principalobjekts.

    Thread.CurrentPrincipal = MyPrincipal
    
    Thread.CurrentPrincipal = MyPrincipal;
    

Beispiel

Im folgenden Codebeispiel wird das Erstellen einer Instanz von GenericPrincipal und GenericIdentity veranschaulicht. Der Code zeigt die Werte dieser Objekte in der Konsole an.

Imports System
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 
        ' PrincipalPermisson 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 
    // PrincipalPermisson 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;
    }
}

Bei der Ausführung zeigt die Anwendung folgende Ausgabe an.

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

Siehe auch

Konzepte

Ersetzen eines Principalobjekts

Principal- und Identitätsobjekte

Referenz

GenericIdentity

GenericPrincipal

PrincipalPermission