Thread.CurrentPrincipal Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает или задает текущего участника потока (для безопасности на основе ролей).
public:
static property System::Security::Principal::IPrincipal ^ CurrentPrincipal { System::Security::Principal::IPrincipal ^ get(); void set(System::Security::Principal::IPrincipal ^ value); };
public static System.Security.Principal.IPrincipal? CurrentPrincipal { get; set; }
public static System.Security.Principal.IPrincipal CurrentPrincipal { get; set; }
static member CurrentPrincipal : System.Security.Principal.IPrincipal with get, set
Public Shared Property CurrentPrincipal As IPrincipal
Значение свойства
Значение IPrincipal, представляющее контекст безопасности.
Исключения
Вызывающий объект не имеет разрешений, необходимых для задания участника.
Примеры
В следующем примере кода показано, как задать и извлечь субъект потока.
using namespace System;
using namespace System::Security;
using namespace System::Security::Permissions;
using namespace System::Security::Principal;
using namespace System::Threading;
int main()
{
array<String^>^rolesArray = {"managers","executives"};
try
{
// Set the principal to a new generic principal.
Thread::CurrentPrincipal = gcnew GenericPrincipal( gcnew GenericIdentity( "Bob","Passport" ),rolesArray );
}
catch ( SecurityException^ secureException )
{
Console::WriteLine( "{0}: Permission to set Principal "
"is denied.", secureException->GetType()->Name );
}
IPrincipal^ threadPrincipal = Thread::CurrentPrincipal;
Console::WriteLine( "Name: {0}\nIsAuthenticated: {1}"
"\nAuthenticationType: {2}", threadPrincipal->Identity->Name, threadPrincipal->Identity->IsAuthenticated.ToString(), threadPrincipal->Identity->AuthenticationType );
}
using System;
using System.Security;
using System.Security.Permissions;
using System.Security.Principal;
using System.Threading;
class Principal
{
static void Main()
{
string[] rolesArray = {"managers", "executives"};
try
{
// Set the principal to a new generic principal.
Thread.CurrentPrincipal =
new GenericPrincipal(new GenericIdentity(
"Bob", "Passport"), rolesArray);
}
catch(SecurityException secureException)
{
Console.WriteLine("{0}: Permission to set Principal " +
"is denied.", secureException.GetType().Name);
}
IPrincipal threadPrincipal = Thread.CurrentPrincipal;
Console.WriteLine("Name: {0}\nIsAuthenticated: {1}" +
"\nAuthenticationType: {2}",
threadPrincipal.Identity.Name,
threadPrincipal.Identity.IsAuthenticated,
threadPrincipal.Identity.AuthenticationType);
}
}
open System.Security
open System.Security.Principal
open System.Threading
let rolesArray = [| "managers"; "executives" |]
try
// Set the principal to a new generic principal.
Thread.CurrentPrincipal <- GenericPrincipal(GenericIdentity("Bob", "Passport"), rolesArray)
with :? SecurityException as secureException ->
printfn $"{secureException.GetType().Name}: Permission to set Principal is denied."
let threadPrincipal = Thread.CurrentPrincipal
printfn $"Name: {threadPrincipal.Identity.Name}\nIsAuthenticated: {threadPrincipal.Identity.IsAuthenticated}\nAuthenticationType: {threadPrincipal.Identity.AuthenticationType}"
Option Explicit
Option Strict
Imports System.Security
Imports System.Security.Permissions
Imports System.Security.Principal
Imports System.Threading
Public Class Principal
<MTAThread> _
Shared Sub Main()
Dim rolesArray As String() = {"managers", "executives"}
Try
' Set the principal to a new generic principal.
Thread.CurrentPrincipal = _
New GenericPrincipal(New GenericIdentity( _
"Bob", "Passport"), rolesArray)
Catch secureException As SecurityException
Console.WriteLine("{0}: Permission to set Principal " & _
"is denied.", secureException.GetType().Name)
End Try
Dim threadPrincipal As IPrincipal = Thread.CurrentPrincipal
Console.WriteLine( _
"Name: {0}" & vbCrLf & "IsAuthenticated:" & _
" {1}" & vbCrLf & "AuthenticationType: {2}", _
threadPrincipal.Identity.Name, _
threadPrincipal.Identity.IsAuthenticated, _
threadPrincipal.Identity.AuthenticationType)
End Sub
End Class
Применяется к
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.