SYSLIB0002: PrincipalPermissionAttribute je zastaralý
Konstruktor PrincipalPermissionAttribute je zastaralý a vytvoří chybu SYSLIB0002
v době kompilace , počínaje v .NET 5. Nelze vytvořit instanci tohoto atributu nebo jej použít pro metodu.
Na rozdíl od jiných upozornění na obsoletion nemůžete chybu potlačit.
Alternativní řešení
Pokud používáte atribut na metodu akce ASP.NET MVC:
Zvažte použití ASP. Integrovaná autorizační infrastruktura technologie NET. Následující kód ukazuje, jak anotovat kontroler s atributem AuthorizeAttribute . Modul runtime ASP.NET před provedením akce autorizuje uživatele.
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. } } }
Další informace najdete v tématu Autorizace na základě role v ASP.NET Core a Úvod k autorizaci v ASP.NET Core.
Pokud atribut používáte pro kód knihovny mimo kontext webové aplikace:
Proveďte kontroly ručně na začátku metody voláním IPrincipal.IsInRole(String) metody.
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. }