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. }