Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
ASP0026:
| Värde | |
|---|---|
| Regel-ID | ASP0026 | 
| Kategori | Användning | 
| Korrigeringen är antingen brytande eller icke-brytande | Oskiljbar | 
Orsak
Det verkar intuitivt att ett [Authorize] attribut som placeras "närmare" en MVC-åtgärd än ett [AllowAnonymous] attribut skulle åsidosätta [AllowAnonymous]-attributet och tvinga auktorisering. Detta är dock inte nödvändigtvis fallet. Vad som spelar roll är attributens relativa ordning.
Följande kod visar exempel där ett närmare [Authorize] attribut åsidosätts av ett [AllowAnonymous] attribut som ligger längre bort.
[AllowAnonymous]
public class MyController
{
    [Authorize] // Overridden by the [AllowAnonymous] attribute on the class
    public IActionResult Private() => null;
}
[AllowAnonymous]
public class MyControllerAnon : ControllerBase
{
}
[Authorize] // Overridden by the [AllowAnonymous] attribute on MyControllerAnon
public class MyControllerInherited : MyControllerAnon
{
}
public class MyControllerInherited2 : MyControllerAnon
{
    [Authorize] // Overridden by the [AllowAnonymous] attribute on MyControllerAnon
    public IActionResult Private() => null;
}
[AllowAnonymous]
[Authorize] // Overridden by the preceding [AllowAnonymous]
public class MyControllerMultiple : ControllerBase
{
}
Regelbeskrivning
Varning om att ett [Authorize]-attribut åsidosätts av ett [AllowAnonymous] attribut från "längre bort".
Så här åtgärdar du överträdelser
Rätt åtgärd om du ser den här varningen beror på avsikten bakom attributen. Längre bort [AllowAnonymous]-attributet bör tas bort om det oavsiktligt exponerar slutpunkten för anonyma användare. Om attributet [AllowAnonymous] var avsett att åsidosätta ett närmare [Authorize] attribut kan du upprepa attributet [AllowAnonymous] efter attributet [Authorize] för att förtydliga avsikten.
[AllowAnonymous]
public class MyController
{
    // This produces no warning because the second, "closer" [AllowAnonymous]
    // clarifies that [Authorize] is intentionally overridden.
    // Specifying AuthenticationSchemes can still be useful
    // for endpoints that allow but don't require authenticated users.
    [Authorize(AuthenticationSchemes = "Cookies")]
    [AllowAnonymous]
    public IActionResult Privacy() => null;
}
När du ska ignorera varningar
Allvarlighetsgraden för den här diagnostiken är Information. Du kan ignorera varningar om din avsikt är att åsidosätta attributet [Authorize]. Vi rekommenderar dock att du gör avsikten tydlig genom att upprepa attributet [AllowAnonymous] efter attributet [Authorize].
ASP.NET Core