Compartir a través de


Cómo: Crear objetos GenericPrincipal y GenericIdentity

Se puede utilizar la clase GenericIdentity conjuntamente con la clase GenericPrincipal para crear un esquema de autorización que sea independiente del dominio de Windows NT o Windows 2000.

Para crear un objeto GenericPrincipal

  1. Cree una instancia nueva de la clase de identidad e inicialícela con el nombre que desee que contenga. El código siguiente crea un objeto GenericIdentity nuevo y lo inicializa con el nombre MyUser.

    Dim MyIdentity As New GenericIdentity("MyUser")
    
    GenericIdentity MyIdentity = new GenericIdentity("MyUser");
    
  2. Cree una instancia nueva de la clase GenericPrincipal e inicialícela con el objeto GenericIdentity creado anteriormente y una matriz de cadenas que representen las funciones que desee asociar a esta entidad de seguridad. En el siguiente ejemplo de código se especifica una matriz de cadenas que representan una función de administrador y una función de usuario. A continuación, la clase GenericPrincipal se inicializa con el objeto GenericIdentity anterior y la matriz de cadenas.

    Dim MyStringArray As String() = {"Manager", "Teller"}
    DIm MyPrincipal As New GenericPrincipal(MyIdentity, MyStringArray)
    
    String[] MyStringArray = {"Manager", "Teller"};
    GenericPrincipal MyPrincipal = new GenericPrincipal(MyIdentity, MyStringArray);
    
  3. Utilice el código siguiente para asociar la entidad de seguridad al subproceso actual. Este método es muy útil en situaciones en que la entidad de seguridad debe validarse varias veces, debe validarse en otro código que se ejecuta en la aplicación o debe validarse mediante un objeto PrincipalPermission. Se puede seguir realizando la validación basada en funciones en el objeto de entidad de seguridad sin asociarlo al subproceso. Para obtener más información, vea Reemplazar un objeto de entidad de seguridad.

    Thread.CurrentPrincipal = MyPrincipal
    
    Thread.CurrentPrincipal = MyPrincipal;
    

Ejemplo

El ejemplo de código siguiente muestra cómo se crea una instancia de una clase GenericPrincipal y una clase GenericIdentity. Este código muestra los valores de estas clases en la consola.

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

Después de ejecutarse, la aplicación muestra un resultado similar al siguiente.

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

Vea también

Referencia

GenericIdentity

GenericPrincipal

PrincipalPermission

Conceptos

Reemplazar un objeto Principal

Objetos Principal e Identity