Sdílet prostřednictvím


SYSLIB0002: PrincipalPermissionAttribute je zastaralý

Konstruktor PrincipalPermissionAttribute je zastaralý a vytvoří chybu SYSLIB0002v 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.
    }
    

Viz také

PrincipalPermissionAttribute je zastaralá jako chyba