Nasıl yapılır: GenericPrincipal ve GenericIdentity Nesneleri Oluşturma
Not
Bu makale Windows için geçerlidir.
ASP.NET Core hakkında bilgi için bkz . ASP.NET Core Güvenliğine Genel Bakış.
Sınıfını GenericIdentity , bir Windows etki alanından bağımsız olarak var olan bir yetkilendirme şeması oluşturmak için sınıfıyla GenericPrincipal birlikte kullanabilirsiniz.
GenericPrincipal nesnesi oluşturmak için
Kimlik sınıfının yeni bir örneğini oluşturun ve saklamak istediğiniz adla başlatın. Aşağıdaki kod yeni bir GenericIdentity nesnesi oluşturur ve adıyla
MyUser
başlatır.Dim myIdentity As New GenericIdentity("MyUser")
GenericIdentity myIdentity = new GenericIdentity("MyUser");
GenericPrincipal sınıfının yeni bir örneğini oluşturun ve daha önce oluşturulan GenericIdentity nesnesiyle ve bu sorumluyla ilişkilendirılmasını istediğiniz rolleri temsil eden bir dize dizisiyle başlatın. Aşağıdaki kod örneği, yönetici rolünü ve kullanıcı rolünü temsil eden dize dizisini belirtir. GenericPrincipal daha sonra önceki GenericIdentity ve dize dizisiyle başlatılır.
Dim myStringArray As String() = {"Manager", "Teller"} DIm myPrincipal As New GenericPrincipal(myIdentity, myStringArray)
String[] myStringArray = {"Manager", "Teller"}; GenericPrincipal myPrincipal = new GenericPrincipal(myIdentity, myStringArray);
Sorumluyu geçerli iş parçacığına eklemek için aşağıdaki kodu kullanın. Bu, sorumlunun birkaç kez doğrulanması, uygulamanızda çalışan diğer kodlar tarafından doğrulanması veya bir nesne tarafından doğrulanması gereken durumlarda değerlidir PrincipalPermission . İş parçacığına eklemeden asıl nesne üzerinde rol tabanlı doğrulama gerçekleştirmeye devam edebilirsiniz. Daha fazla bilgi için bkz . Asıl Nesneyi Değiştirme.
Thread.CurrentPrincipal = myPrincipal
Thread.CurrentPrincipal = myPrincipal;
Örnek
Aşağıdaki kod örneğinde GenericPrincipal ve GenericIdentity örneğinin nasıl oluşturulacağı gösterilmektedir. Bu kod, bu nesnelerin değerlerini konsolda görüntüler.
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;
}
}
Yürütürken, uygulama aşağıdakine benzer bir çıkış görüntüler.
The Name is: MyIdentity
The IsAuthenticated is: True
Is this a Manager? True