Delen via


SYSLIB0002: PrincipalPermissionAttribute is verouderd

De PrincipalPermissionAttribute constructor is verouderd en produceert compileertijdfout SYSLIB0002, te beginnen in .NET 5. U kunt dit kenmerk niet instantiƫren of toepassen op een methode.

In tegenstelling tot andere verdoezelingswaarschuwingen, kunt u de fout niet onderdrukken.

Tijdelijke oplossingen

  • Als u het kenmerk toepast op een ASP.NET MVC-actiemethode:

    Overweeg ASP te gebruiken. De ingebouwde autorisatie-infrastructuur van NET. De volgende code laat zien hoe u aantekeningen maakt op een controller met een AuthorizeAttribute kenmerk. De ASP.NET runtime autoriseert de gebruiker voordat de actie wordt uitgevoerd.

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

    Zie Autorisatie op basis van rollen in ASP.NET Core en Inleiding tot autorisatie in ASP.NET Core voor meer informatie.

  • Als u het kenmerk toepast op bibliotheekcode buiten de context van een web-app:

    Voer de controles handmatig uit aan het begin van de methode door de methode aan te IPrincipal.IsInRole(String) roepen.

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

Zie ook

PrincipalPermissionAttribute is verouderd als fout