Afficher en anglais

Partage via


AppDomain.SetPrincipalPolicy(PrincipalPolicy) Méthode

Définition

Spécifie la façon dont les objets Principal et Identity doivent être attachés à un thread si celui-ci tente d'établir une liaison vers un principal au moment de l'exécution dans ce domaine d'application.

C#
public void SetPrincipalPolicy(System.Security.Principal.PrincipalPolicy policy);

Paramètres

policy
PrincipalPolicy

L'une des valeurs de PrincipalPolicy qui spécifie le type de l'objet principal à joindre aux threads.

Implémente

Exceptions

L’opération est tentée sur un domaine d’application non chargé.

Exemples

L’exemple suivant montre l’effet sur les threads de l’utilisation de la SetPrincipalPolicy méthode pour modifier la stratégie principale du domaine d’application. Il montre également l’effet de l’utilisation de la SetThreadPrincipal méthode pour modifier le principal disponible pour l’attachement à des threads dans le domaine d’application.

C#
using System;
using System.Security.Principal;
using System.Threading;

class ADPrincipal
{
    static void Main(string[] args)
    {
        // Create a new thread with a generic principal.
        Thread t = new Thread(new ThreadStart(PrintPrincipalInformation));
        t.Start();
        t.Join();

        // Set the principal policy to WindowsPrincipal.
        AppDomain currentDomain = AppDomain.CurrentDomain;
        currentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
            
        // The new thread will have a Windows principal representing the
        // current user.
        t = new Thread(new ThreadStart(PrintPrincipalInformation));
        t.Start();
        t.Join();

        // Create a principal to use for new threads.
        IIdentity identity = new GenericIdentity("NewUser");
        IPrincipal principal = new GenericPrincipal(identity, null);
        currentDomain.SetThreadPrincipal(principal);
            
        // Create a new thread with the principal created above.
        t = new Thread(new ThreadStart(PrintPrincipalInformation));
        t.Start();
        t.Join();
        
        // Wait for user input before terminating.
        Console.ReadLine();
    }

    static void PrintPrincipalInformation()
    {
        IPrincipal curPrincipal = Thread.CurrentPrincipal;
        if(curPrincipal != null)
        {
            Console.WriteLine("Type: " + curPrincipal.GetType().Name);
            Console.WriteLine("Name: " + curPrincipal.Identity.Name);
            Console.WriteLine("Authenticated: " +
                curPrincipal.Identity.IsAuthenticated);
            Console.WriteLine();
        }
    }
}

Remarques

La définition de cette valeur ne sera effective que si vous la définissez avant d’utiliser la Thread.CurrentPrincipal propriété . Par exemple, si vous définissez Thread.CurrentPrincipal sur un principal donné (par exemple, un principal générique) et que vous utilisez la SetPrincipalPolicy méthode pour définir sur PrincipalPolicyWindowsPrincipal, le principal actuel reste le principal générique.

S’applique à

Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1