Jednoduchá autorizace v ASP.NET Core

Autorizace v ASP.NET Core se řídí pomocí různých AuthorizeAttribute parametrů a . Ve své nejzákladnější podobě použití atributu na kontroler, akci nebo stránku omezuje přístup k ověřeným [Authorize] Razor uživatelům této součásti.

Následující kód omezuje přístup k AccountController ověřeným uživatelům:

[Authorize]
public class AccountController : Controller
{
    public ActionResult Login()
    {
    }

    public ActionResult Logout()
    {
    }
}

Pokud chcete použít autorizaci pro akci místo kontroleru, použijte AuthorizeAttribute atribut na samotnou akci:

public class AccountController : Controller
{
   public ActionResult Login()
   {
   }

   [Authorize]
   public ActionResult Logout()
   {
   }
}

Nyní mají k funkci přístup jenom ověření Logout uživatelé.

Atribut můžete použít také AllowAnonymous k povolení přístupu neověřovaných uživatelů k jednotlivým akcím. Například:

[Authorize]
public class AccountController : Controller
{
    [AllowAnonymous]
    public ActionResult Login()
    {
    }

    public ActionResult Logout()
    {
    }
}

To by umožnilo jenom ověřeným uživatelům pro , s výjimkou akce, která je přístupná všem bez ohledu na jejich ověřený nebo neověřený AccountController Login /anonymní stav.

Upozornění

[AllowAnonymous] obchází všechny autorizační příkazy. Pokud zkombinujete [AllowAnonymous] [Authorize] a jakýkoli atribut, [Authorize] atributy se ignorují. Pokud například použijete na úrovni kontroleru, všechny atributy na stejném kontroleru (nebo u jakékoli akce v [AllowAnonymous] [Authorize] kontroleru) se ignorují.

Následující kód omezuje přístup ke stránce LogoutModel Razor na ověřené uživatele:

[Authorize]
public class LogoutModel : PageModel
{
    public async Task OnGetAsync()
    {

    }

    public async Task<IActionResult> OnPostAsync()
    {

    }
}

Informace o tom, jak globálně vyžadovat ověření všech uživatelů, najdete v tématu vyžadování ověřených uživatelů.

Autorizovat atribut a Razor stránky

AuthorizeAttributeNelze použít u obslužných Razor rutin stránky. Například nelze použít pro , nebo žádnou jinou obslužnou [Authorize] OnGet OnPost rutinu stránky. Zvažte použití kontroleru ASP.NET Core MVC pro stránky s různými požadavky na autorizaci pro různé obslužné rutiny. Použití kontroleru MVC v případě, že jsou vyžadovány různé požadavky na autorizaci:

  • Je nejméně složitý přístup.
  • Je přístup doporučený Microsoftem.

Pokud se rozhodnete nepoužít kontroler MVC, můžete k použití autorizace u metod obslužné rutiny stránky použít následující dva Razor přístupy:

Upozornění

Ukázkový přístup PageHandlerAuth ne:

  • Vytvořte s atributy autorizace použitými na stránku, model stránky nebo globálně. Vytváření atributů autorizace vede k vícenásobnému spuštění ověřování a autorizace, pokud máte na stránce také použitou jednu instanci AuthorizeAttribute AuthorizeFilter nebo .
  • Pracujte ve spojení se zbytkem systému ASP.NET Core ověřování a autorizace. Je nutné ověřit, že tento přístup funguje správně pro vaši aplikaci.

Neexistují žádné plány na podporu obslužných AuthorizeAttribute rutin Razor na stránce.