SYSLIB0002 : PrincipalPermissionAttribute est obsolète

Le constructeur PrincipalPermissionAttribute est obsolète et génère une erreur de compilation SYSLIB0002 à compter de .NET 5. Vous ne pouvez pas instancier cet attribut ou l’appliquer à une méthode.

Contrairement à d’autres avertissements d’obsolescence, vous ne pouvez pas supprimer l’erreur.

Solutions de contournement

  • Si vous appliquez l’attribut à un ASP.NET méthode d’action MVC :

    Envisagez d’utiliser l’infrastructure d’autorisation intégrée d’ASP.NET. Le code suivant montre comment annoter un contrôleur avec un attribut AuthorizeAttribute. Le runtime ASP.NET autorise l’utilisateur avant d’effectuer l’action.

    using Microsoft.AspNetCore.Authorization;
    
    namespace MySampleApp
    {
        [Authorize(Roles = "Administrator")]
        public class AdministrationController : Controller
        {
            public ActionResult MyAction()
            {
                // This code won't run unless the current user
                // is in the 'Administrator' role.
            }
        }
    }
    

    Pour plus d’informations, consultez Autorisation basée sur les rôles dans ASP.NET Core et Présentation de l’autorisation dans ASP.NET Core.

  • Si vous appliquez l’attribut au code de bibliothèque en dehors du contexte d’une application web :

    Effectuez les vérifications manuellement au début de votre méthode en appelant la méthode IPrincipal.IsInRole(String).

    using System.Threading;
    
    void DoSomething()
    {
        if (Thread.CurrentPrincipal == null
            || !Thread.CurrentPrincipal.IsInRole("Administrators"))
        {
            throw new Exception("User is anonymous or isn't an admin.");
        }
    
        // Code that should run only when user is an administrator.
    }
    

Voir aussi

PrincipalPermissionAttribute est obsolète en tant qu’erreur