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
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");
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);
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