SYSLIB0002: Atrybut principalPermissionAttribute jest przestarzały
Konstruktor PrincipalPermissionAttribute jest przestarzały i generuje błąd SYSLIB0002
czasu kompilacji , zaczynając od platformy .NET 5. Nie można utworzyć wystąpienia tego atrybutu ani zastosować go do metody.
W przeciwieństwie do innych ostrzeżeń dotyczących obsoletionu, nie można pominąć błędu.
Obejścia
Jeśli stosujesz atrybut do metody akcji MVC ASP.NET:
Rozważ użycie platformy ASP. Wbudowana infrastruktura autoryzacji platformy NET. Poniższy kod przedstawia sposób dodawania adnotacji do kontrolera za pomocą atrybutu AuthorizeAttribute . Środowisko uruchomieniowe ASP.NET autoryzuje użytkownika przed wykonaniem akcji.
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. } } }
Aby uzyskać więcej informacji, zobacz Autoryzacja oparta na rolach w ASP.NET Core i Wprowadzenie do autoryzacji w ASP.NET Core.
Jeśli stosujesz atrybut do kodu biblioteki poza kontekstem aplikacji internetowej:
Wykonaj testy ręcznie na początku metody, wywołując metodę 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. }
Zobacz też
Atrybut PrincipalPermissionAttribute jest przestarzały jako błąd