Programování

Jak používat filtry akcí v ASP.NET Core MVC

Filtry v ASP.NET Core MVC nám umožňují spouštět kód před nebo po konkrétních fázích kanálu zpracování požadavků. Různé typy filtrů odpovídají různým fázím kanálu, od autorizace po provedení výsledku.

Například můžete využít akční filtry v ASP.NET Core MVC k provedení vlastního kódu před a po provedení metody akce. Tento článek představuje diskusi o vestavěných filtrech v ASP.NET Core MVC, proč jsou užitečné a jak můžeme použít akční filtry v našich aplikacích ASP.NET Core.

Filtry v ASP.NET Core MVC

ASP.NET Core MVC obsahuje mnoho předdefinovaných filtrů. Patří mezi ně následující:

  • ActionFilters. Jsou prováděny před a po provedení akční metody řadiče.
  • AuthorizationFilters. Tyto filtry se provádějí na začátku kanálu požadavků. Používají se k ověření pověření uživatele ke kontrole, zda je uživatel autorizován.
  • Filtry zdrojů. Tyto filtry se provádějí po autorizaci a předtím, než dojde k vazbě modelu. Pro implementaci ukládání do mezipaměti můžete využít ResourceFilters.
  • Filtry výsledků. Tyto filtry se používají ke spuštění kódu před a po provedení metody IActionResult metody akce.
  • Filtry výjimek. Tyto filtry se používají ke zpracování všech výjimek, ke kterým dochází v kanálu. Můžete použít ExceptionFilters k provedení vlastního kódu, když došlo k výjimce.

Volba typu použitého filtru závisí na tom, čeho se snažíte dosáhnout. Jako příklad, pokud se pokoušíte zkratovat požadavek (tj. Zastavit akční metodu v provádění a předčasně vrátit výsledek), použijete filtr prostředků. Alternativně, pokud se pokoušíte změnit parametry metody akce a výsledek vrácený z metody akce, použijete filtr akce.

Třída ActionFilterAttribute implementuje rozhraní IActionFilter, IAsyncActionFilter, IResultFilter, IAsyncResultFilter a IOrderedFilter. Tuto třídu můžete využít k implementaci filtru metod, filtru řadiče nebo globálního filtru. Budeme to zkoumat dále v tomto článku.

Vytvořte projekt webového rozhraní API ASP.NET Core v sadě Visual Studio 2017

Nejprve si vytvořme projekt webového API ASP.NET Core v sadě Visual Studio. Pokud je ve vašem systému spuštěná Visual Studio 2017, vytvořte projekt ASP.NET Core MVC podle pokynů níže.

  1. Spusťte Visual Studio 2017 IDE.
  2. Klikněte na Soubor> Nový> Projekt.
  3. V seznamu zobrazených šablon vyberte „Webová aplikace ASP.NET Core (.NET Core)“.
  4. Zadejte název projektu.
  5. Kliknutím na OK projekt uložíte.
  6. Zobrazí se nové okno „Nová webová aplikace .NET Core…“.
  7. Vyberte .NET Core jako modul runtime a ASP.NET Core 2.1 (nebo novější) z rozevíracího seznamu v horní části.
  8. Jako šablonu projektu vyberte „Web Application (Model-View-Controller)“.
  9. Zaškrtněte políčka „Povolit podporu Dockeru“ a „Konfigurovat pro HTTPS“. Tyto funkce zde nebudeme používat.
  10. Ujistěte se, že je vybráno „Žádné ověření“. Ani zde nebudeme používat ověřování.

Tím se vytvoří nový projekt ASP.NET Core MVC v sadě Visual Studio. Tento projekt použijeme k implementaci našich akčních filtrů v následujících částech.

Vytvořte vlastní filtr akcí v ASP.NET Core MVC

Můžete využít výhod vlastních filtrů akcí k provedení opakovaně použitelného kódu před nebo po provedení metody akce. Následující abstraktní základní třídy můžete rozšířit a vytvořit vlastní filtry. Všimněte si, že každá z těchto abstraktních tříd rozšiřuje třídu Attribute.

  • ActionFilterAttribute
  • ResultFilterAttribute
  • ExceptionFilterAttribute
  • ServiceFilterAttribute
  • TypeFilterAttribute

Můžete také rozšířit rozhraní IActionFilter a implementovat jeho metody k vytvoření vlastního filtru. Můžete vytvořit synchronní i asynchronní filtry.

Vytvořte filtr synchronních akcí v ASP.NET Core MVC

Následující fragment kódu ukazuje, jak lze vytvořit filtr synchronních akcí rozšířením rozhraní IActionFilter a implementací metod OnActionExecuting a OnActionExecuted.

veřejná třída SimpleActionFilter: IActionFilter

    {

public void OnActionExecuting (ActionExecutingContext kontext)

        {

// tato metoda bude provedena před provedením metody akce

        }

public void OnActionExecuted (ActionExecutedContext kontext)

        {

// tato metoda bude provedena po provedení metody akce

        }

    }

Vytvořte filtr asynchronní akce v ASP.NET Core MVC

Chcete-li vytvořit filtr asynchronní akce, můžete rozšířit rozhraní IAsyncActionFilter a implementovat metodu OnActionExecutionAsync, jak je ukázáno v fragmentu kódu níže.

veřejná třída SimpleAsyncActionFilter: IAsyncActionFilter

    {

veřejná asynchronní úloha OnActionExecutionAsync (ActionExecutingContext kontext,

ActionExecutionDelegate další)

        {

// zde napsaný kód bude proveden před provedením metody akce

čekat na next ();

// zde napsaný kód bude proveden po provedení metody akce

        }

    }

Přidejte filtr akcí v metodě ConfigureServices v ASP.NET Core

Filtry můžete přidat na různých úrovních rozsahu. Patří mezi ně rozsah akce, rozsah řadiče a globální rozsah. Následující fragment kódu ukazuje, jak můžete přidat filtr do globálního rozsahu. Všimněte si, jak se vlastní filtr akcí, který jsme implementovali výše, přidá do kolekce filtrů v metodě ConfigureServices třídy Startup. Všimněte si, že filtr je přidán do kolekce filtrů podle instance.

services.AddMvc (možnosti =>

            {

options.Filters.Add (nový SimpleAsyncActionFilter ());

}). SetCompatibilityVersion (CompatibilityVersion.Version_2_1);

Filtr můžete také přidat podle typu, jak je znázorněno v úryvku kódu níže.

services.AddMvc (možnosti =>

            {

options.Filters.Add (typeof (SimpleAsyncActionFilter));

}). SetCompatibilityVersion (CompatibilityVersion.Version_2_1);

Filtry umožňují provádět kód před nebo po určitém bodě v kanálu zpracování požadavků. Jedním z velkých nových vylepšení v akčních filtrech v ASP.NET Core MVC je schopnost určit pořadí provádění filtru v kanálu požadavků HTTP. Prozkoumáme tuto a mnoho dalších funkcí filtrů v ASP.NET Core MVC v nadcházejícím příspěvku.

$config[zx-auto] not found$config[zx-overlay] not found