Jarné dáta s jarnou bezpečnosťou

1. Prehľad

Spring Security poskytuje dobrú podporu pre integráciu s Spring Data. Zatiaľ čo prvý sa zaoberá bezpečnostnými aspektmi našej aplikácie, druhý poskytuje pohodlný prístup k databáze obsahujúcej údaje aplikácie.

V tomto článku si povieme, ako na to Spring Security môže byť integrovaný s Spring Data, aby umožnil viac užívateľsky špecifických dotazov.

2. Zabezpečenie pružiny + konfigurácia údajov pružiny

V našom úvode k Spring Data JPA sme videli, ako nastaviť Spring Data v jarnom projekte. Aby sme umožnili zabezpečenie pružiny a údaje pružiny, ako obvykle, môžeme prijať konfiguráciu založenú na prostredí Java alebo XML.

2.1. Konfigurácia Java

Pripomeňme, že z formulára Spring Security Login (sekcie 4 a 5) môžeme do nášho projektu pridať Spring Security pomocou konfigurácie založenej na anotáciách:

@EnableWebSecurity verejná trieda WebSecurityConfig rozširuje WebSecurityConfigurerAdapter {// definície fazule}

Ďalšie podrobnosti o konfigurácii by podľa potreby obsahovali definíciu filtrov, fazúľ a ďalších bezpečnostných pravidiel.

Aby sme povolili Spring Data v Spring Security, jednoducho pridáme túto fazuľu do WebSecurityConfig:

@Bean public SecurityEvaluationContextExtension securityEvaluationContextExtension () {vrátiť nový SecurityEvaluationContextExtension (); }

Vyššie uvedená definícia umožňuje aktiváciu automatického riešenia výrazov špecifických pre pružinu, ktoré sú anotované na triedach.

2.2. Konfigurácia XML

Konfigurácia založená na XML začína zahrnutím menného priestoru Spring Security:

 ... 

Rovnako ako v konfigurácii založenej na prostredí Java, aj pre konfiguráciu založenú na XML alebo mennom priestore by sme pridali SecurityEvaluationContextExtension bean do konfiguračného súboru XML:

Definovanie SecurityEvaluationContextExtension sprístupňuje všetky bežné výrazy v Spring Security z dotazov Spring Data.

Medzi také bežné výrazy patrí principál, autentifikácia, isAnonymous (), hasRole ([rola]), isAuthenticated, atď.

3. Príklad použitia

Zvážme niektoré prípady použitia Spring Data a Spring Security.

3.1. Obmedziť AppUser Aktualizácia poľa

V tomto príklade sa pozrieme na obmedzenie AppPoužívateľ‘S posledné prihlásenie aktualizácia poľa na jediného aktuálne overeného používateľa.

Týmto myslíme to kedykoľvek updateLastLogin metóda sa spustí, aktualizuje sa iba posledné prihlásenie pole aktuálne autentifikovaného užívateľa.

Aby sme to dosiahli, pridávame k nášmu dotazu nižšie UserRepository rozhranie:

@Query ("UPDATE AppUser u SET u.lastLogin =: lastLogin WHERE" + "u.username =? # {Principal? .Username}") public void updateLastLogin (dátum lastLogin);

Bez integrácie Spring Data a Spring Security by sme za normálnych okolností museli používateľské meno odovzdať ako argument updateLastLogin.

V prípade, že sú poskytnuté nesprávne prihlasovacie údaje používateľa, proces prihlásenia zlyhá a nemusíme sa obťažovať so zabezpečením overenia prístupu.

3.2. Načítať konkrétne AppUser ' Obsah s stránkovaním

Ďalším scenárom, kde Spring Data a Spring Security fungujú dokonale ruka v ruke, je prípad, keď potrebujeme načítať obsah z našej databázy, ktorý vlastní aktuálne overený používateľ.

Napríklad, ak máme aplikáciu výškového reproduktora, môžeme chcieť zobraziť tweety vytvorené alebo lajknuté súčasným používateľom na ich stránke prispôsobených informačných kanálov.

Môže to samozrejme zahŕňať písanie dotazov na interakciu s jednou alebo viacerými tabuľkami v našej databáze. S Spring Data a Spring Security je to také jednoduché ako písanie:

verejné rozhranie TweetRepository rozširuje PagingAndSortingRepository {@Query ("vyberte twt z Tweet twt JOIN twt.likes ako lk kde lk? # {principal? .username} alebo twt.owner =? # {principal? .username}") Stránka getMyTweetsAndTheOnesILiked (stránkovateľné) stránkovateľné); }

Pretože chceme, aby boli naše výsledky stránkované, naše TweetRepository predlžuje PagingAndSortingRepository vo vyššie uvedenej definícii rozhrania.

4. Záver

Integrácia Spring Data a Spring Security prináša veľkú flexibilitu pri správe autentifikovaných stavov v jarných aplikáciách.

V tejto relácii sme sa zaoberali tým, ako pridať Spring Security do Spring Data. Viac o ďalších výkonných funkciách Spring Data alebo Spring Security sa dozviete v našej zbierke článkov Spring Data a Spring Security.

Útržky kódu ako obvykle nájdete na GitHub.


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