SYSLIB0002: PrincipalPermissionAttribute está obsoleto
O PrincipalPermissionAttribute construtor é obsoleto e produz erro SYSLIB0002
em tempo de compilação , começando no .NET 5. Não é possível instanciar esse atributo ou aplicá-lo a um método.
Ao contrário de outros avisos de obsolescência, você não pode suprimir o erro.
Soluções
Se você estiver aplicando o atributo a um método de ação MVC ASP.NET:
Considere o uso do ASP. Infraestrutura de autorização integrada da NET. O código a seguir demonstra como anotar um controlador com um AuthorizeAttribute atributo. O tempo de execução ASP.NET autorizará o usuário antes de executar a ação.
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. } } }
Para obter mais informações, consulte Autorização baseada em função no ASP.NET Core e Introdução à autorização no ASP.NET Core.
Se você estiver aplicando o atributo ao código da biblioteca fora do contexto de um aplicativo Web:
Execute as verificações manualmente no início do seu método chamando o IPrincipal.IsInRole(String) método.
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. }