Como: Criar Objetos GenericPrincipal e GenericIdentity
Você pode usar o GenericIdentity classe junto com o GenericPrincipal classe para criar um esquema de autorização que existe independente de um domínio Windows NT ou o Windows 2000.
Para criar um objeto GenericPrincipal
Criar uma nova instância da classe de identidade e inicializá-lo com o nome que você deseja que ele mantenha a tecla. O código a seguir cria um novo GenericIdentity de objeto e o inicializa com o nome MyUser.
Dim MyIdentity As New GenericIdentity("MyUser")
GenericIdentity MyIdentity = new GenericIdentity("MyUser");
Criar uma nova instância da GenericPrincipal classe e inicializá-lo com criada anteriormente GenericIdentity objeto e uma matriz de seqüências de caracteres que representam as funções que você deseja associadas a essa entidade. O exemplo de código a seguir especifica uma matriz de seqüências de caracteres que representam uma função de administrador e uma função de usuário. O GenericPrincipal , em seguida, é inicializada com o anterior GenericIdentity e a matriz de cadeia de caracteres.
Dim MyStringArray As String() = {"Manager", "Teller"} DIm MyPrincipal As New GenericPrincipal(MyIdentity, MyStringArray)
String[] MyStringArray = {"Manager", "Teller"}; GenericPrincipal MyPrincipal = new GenericPrincipal(MyIdentity, MyStringArray);
Use o seguinte código para anexar o principal para o segmento atual. Isso é útil em situações onde principal deve ser validado várias vezes, deve ser validada por outro código em execução em seu aplicativo ou deve ser validada por um PrincipalPermission objeto. Você ainda poderá executar a validação baseada em função no objeto principal sem anexá-lo para o segmento. Para obter mais informações, consulte a substituição de um objeto Principal.
Thread.CurrentPrincipal = MyPrincipal
Thread.CurrentPrincipal = MyPrincipal;
Exemplo
O exemplo de código a seguir demonstra como criar uma instância de um GenericPrincipal e um GenericIdentity. Esse código exibe os valores desses objetos no console.
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;
}
}
Quando executado, o aplicativo exibe saída similar à seguinte.
The Name is: MyIdentity
The IsAuthenticated is: True
Is this a Manager? True