Partilhar via


SYSLIB0002: PrincipalPermissionAttribute está obsoleto

O PrincipalPermissionAttribute construtor é obsoleto e produz erro SYSLIB0002em 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.
    }
    

Consulte também

PrincipalPermissionAttribute está obsoleto como erro