Požadavky: Projekt musí dynamicky upravovat parametry požadavků, přiřadit hodnoty parametrům požadavku podle aktuálních oprávnění uživatele, před vstupem parametrů do metody kontroleru musí být provedena úprava parametrů požadavku a když řadič vyvolá servisní vrstvu, parametry požadavku mohou být použity jako podmínky pro dotazování a úpravu dat. Existují dva případy požadavků na parametry:
- Pro uživatele s vysokými oprávněními můžete použít skutečné požadované hodnoty parametrů
- U lidí s pouze částečnými oprávněními jsou hodnoty parametrů požadavku dynamicky upravovány na základě informací vázaných na aktuálního uživatele
Nejdřív jsem to chtěl implementovat přes filtr, ale bylo příliš složité serializovat a deserializovat obsah požadavků, a také to vyžadovalo hodně logického úsudku a ztráty výkonu. Naštěstí Spring poskytuje AOP funkcionalitu orientovanou na obličeje, kterou lze implementovat jednoduchým kódem.
Nejprve by projekt maven pom.xml potřeboval představit balíček spring-boot-starter-aop, a to následovně:
Jakmile je balíček představen, můžeme využít funkci AOP, přes@Aspectanotace.
Aspect podporuje 5 typů notací oznámení:
@Before: Předběžné oznámení, které se provádí před vykonáním metody
@After: Post-notification, provedeno po spuštění metody
@AfterRunning: Vrátí oznámení, které se vykoná poté, co metoda vrátí výsledek
@AfterThrowing: Oznámení o výjimce poté, co metoda vyhodí výjimku
@Around: Oznámení kolem systému, kolem provádění metod
Vytvořte Request.java generickou třídu obalu požadavků:
Vytvořte novou UserInfo.java požadovat specifickou datovou třídu:
Pokud má aktuální hlavička požadavku appid, hodnota parametru požadavku appId bude upravena, jinak parametr požadavku nebude upraven, kód je následující:
Vytvořte nový řadič HomeController a přidejte rozhraní s parametrem požadavku obsahujícím Request<UserInfo>, kód je následující:
V případě testování bez hlavičky požadavku appId je parametr požadavku appId skutečnou hodnotou a nebyl upraven, jak ukazuje následující obrázek:
Pokud se pokusíte přidat hlavičku požadavku appId, uvidíte, že parametr požadavku appId byl úspěšně upraven, jak ukazuje následující obrázek:
Nakonec přiložte zdrojový kód:Přihlášení k hypertextovému odkazu je viditelné.
|