Ověřování na straně klienta (ověřování v prezentačních vrstvách)
Spropitné
Tento obsah je výňatek z eBooku, architektury mikroslužeb .NET pro kontejnerizované aplikace .NET, které jsou k dispozici na .NET Docs nebo jako zdarma ke stažení PDF, které lze číst offline.
I když je zdrojem pravdy doménový model a v konečném důsledku musíte mít ověření na úrovni doménového modelu, ověřování je možné i nadále zpracovávat na úrovni doménového modelu (na straně serveru) i na straně uživatelského rozhraní (na straně klienta).
Ověření na straně klienta je skvělé pro uživatele. Šetří čas, který by jinak strávil čekáním na zpáteční cestu na server, který by mohl vrátit chyby ověření. V obchodních podmínkách se dokonce i několik zlomků sekund vynásobených stovkamikrát každý den zvyšuje množství času, výdajů a frustrace. Přímé a okamžité ověření umožňuje uživatelům pracovat efektivněji a vytvářet lepší vstup a výstup kvality.
Stejně jako model zobrazení a doménový model se liší, může být ověření modelu zobrazení a ověření doménového modelu podobné, ale slouží k jinému účelu. Pokud máte obavy ohledně DRY (pravidlo Don't Repeat Yourself), vezměte v úvahu, že v tomto případě může opětovné použití kódu znamenat i provázanost, a v podnikových aplikacích je důležitější zajistit, aby serverová strana nebyla závislá na klientské, než dodržovat pravidlo DRY.
I když používáte ověřování na straně klienta, měli byste vždy ověřovat příkazy nebo vstupní objekty DTO v kódu serveru, protože rozhraní API serveru představují možný vektor útoku. Obvykle je to nejlepší tip, protože pokud máte klientskou aplikaci z pohledu uživatelského prostředí, je nejlepší být proaktivní a nepovolit uživateli zadat neplatné informace.
Proto v kódu na straně klienta obvykle ověřujete modely ViewModels. Můžete také ověřit výstup DTO nebo příkazy klienta před jejich odesláním do služeb.
Implementace ověřování na straně klienta závisí na typu klientské aplikace, kterou vytváříte. Bude se lišit, pokud ověřujete data ve webové aplikaci MVC s většinou kódu v .NET a webové aplikace SPA s ověřovacím kódem v JavaScriptu nebo TypeScriptu.
Další zdroje informací
Ověřování v aplikacích ASP.NET Core
- Rick Anderson. Přidání ověření
https://learn.microsoft.com/aspnet/core/tutorials/first-mvc-app/validation
Ověřování ve webových aplikacích SPA (Angular 2, TypeScript, JavaScript, Blazor WebAssembly)
ověření formuláře
https://angular.io/guide/form-validationValidace. Dokumentace k Breeze.
https://breeze.github.io/doc-js/validation.htmlFormuláře a vstupní komponenty Blazor ASP.NET Core \ </aspnet/core/blazor/forms-and-input-components>
V souhrnu jsou nejdůležitější koncepty týkající se ověřování:
Entity a agregace by měly vynucovat vlastní konzistenci a být vždy platné. Agregační kořeny zodpovídají za konzistenci více entit ve stejné agregaci.
Pokud si myslíte, že entita potřebuje zadat neplatný stav, zvažte použití jiného objektového modelu – například pomocí dočasného objektového objektu, dokud nevytvoříte konečnou entitu domény.
Pokud potřebujete vytvořit několik souvisejících objektů, jako je například agregace, a jsou platné pouze po vytvoření všech objektů, zvažte použití vzoru Factory.
Ve většině případů je redundantní ověřování na straně klienta dobré, protože aplikace může být proaktivní.