次の方法で共有


Thread.CurrentPrincipal プロパティ

ロールベースのセキュリティに関する、スレッドの現在のプリンシパルを取得または設定します。

Public Shared Property CurrentPrincipal As IPrincipal
[C#]
public static IPrincipal CurrentPrincipal {get; set;}
[C++]
public: __property static IPrincipal* get_CurrentPrincipal();public: __property static void set_CurrentPrincipal(IPrincipal*);
[JScript]
public static function get CurrentPrincipal() : IPrincipal;public static function set CurrentPrincipal(IPrincipal);

プロパティ値

セキュリティ コンテキストを表す IPrincipal 値。

例外

例外の種類 条件
SecurityException 呼び出し元に、必要なアクセス許可がありません。

使用例

[Visual Basic, C#, C++] スレッドのプリンシパルを設定および取得する方法の例を次に示します。

 
Option Explicit
Option Strict

Imports Microsoft.VisualBasic
Imports System
Imports System.Security
Imports System.Security.Permissions
Imports System.Security.Principal
Imports System.Threading

' Request permission to set thread principal.
<Assembly: SecurityPermissionAttribute( _
    SecurityAction.RequestOptional, ControlPrincipal := True)>

Public Class Principal

    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

[C#] 
using System;
using System.Security;
using System.Security.Permissions;
using System.Security.Principal;
using System.Threading;

// Request permission to set thread principal.
[assembly: SecurityPermissionAttribute(
    SecurityAction.RequestOptional, ControlPrincipal = true)]
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);
    }
}

[C++] 
#using <mscorlib.dll>

using namespace System;
using namespace System::Security;
using namespace System::Security::Permissions;
using namespace System::Security::Principal;
using namespace System::Threading;

// Request permission to set thread principal.
[assembly: SecurityPermissionAttribute(
    SecurityAction::RequestOptional, ControlPrincipal = true)];
[assembly: SecurityPermissionAttribute(
    SecurityAction::RequestMinimum, UnmanagedCode = true)];

void main()
{
    String* rolesArray[] = {S"managers", S"executives"};
    try
    {
        // Set the principal to a new generic principal.
        Thread::CurrentPrincipal = 
            new GenericPrincipal(new GenericIdentity(
            S"Bob", S"Passport"), rolesArray);
    }
    catch(SecurityException* secureException)
    {
        Console::WriteLine(S"{0}: Permission to set Principal "
            S"is denied.", secureException->GetType()->Name);
    }

    IPrincipal* threadPrincipal = Thread::CurrentPrincipal;
    Console::WriteLine(S"Name: {0}\nIsAuthenticated: {1}"
        S"\nAuthenticationType: {2}", 
        threadPrincipal->Identity->Name, 
        threadPrincipal->Identity->IsAuthenticated.ToString(),
        threadPrincipal->Identity->AuthenticationType);
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

.NET Framework セキュリティ:

参照

Thread クラス | Thread メンバ | System.Threading 名前空間