Dela via


SYSLIB0002: PrincipalPermissionAttribute är föråldrad

Konstruktorn PrincipalPermissionAttribute är föråldrad och skapar kompileringsfel SYSLIB0002med början i .NET 5. Du kan inte instansiera det här attributet eller tillämpa det på en metod.

Till skillnad från andra obsoletionsvarningar kan du inte ignorera felet.

Provisoriska lösningar

  • Om du tillämpar attributet på en ASP.NET MVC-åtgärdsmetod:

    Överväg att använda ASP. NET:s inbyggda auktoriseringsinfrastruktur. Följande kod visar hur du kommenterar en kontrollant med ett AuthorizeAttribute attribut. Den ASP.NET körningen auktoriserar användaren innan åtgärden utförs.

    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.
            }
        }
    }
    

    Mer information finns i Rollbaserad auktorisering i ASP.NET Core och Introduktion till auktorisering i ASP.NET Core.

  • Om du tillämpar attributet på bibliotekskod utanför kontexten för en webbapp:

    Utför kontrollerna manuellt i början av metoden genom att anropa IPrincipal.IsInRole(String) metoden.

    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.
    }
    

Se även

PrincipalPermissionAttribute är föråldrat som fel