Tavaszi adatok a tavaszi biztonsággal

1. Áttekintés

A Spring Security jó támogatást nyújt a Spring Data integrációjához. Míg előbbi az alkalmazásunk biztonsági szempontjaival foglalkozik, az utóbbi kényelmes hozzáférést biztosít az alkalmazás adatait tartalmazó adatbázishoz.

Ebben a cikkben megvitatjuk, hogyan A Spring Security integrálható a Spring Data-val a felhasználó-specifikusabb lekérdezések lehetővé tételéhez.

2. Tavaszi biztonság + tavaszi adatkonfiguráció

A Spring Data JPA bevezetésében láttuk, hogyan állíthatjuk be a Spring Data-t egy Spring projektben. A tavaszi biztonság és a tavaszi adatok engedélyezéséhez a szokásos módon elfogadhatunk Java vagy XML alapú konfigurációt.

2.1. Java konfiguráció

Emlékezzünk arra, hogy a Spring Security bejelentkezési űrlapból (4. és 5. szakasz) a jegyzeteken alapuló konfiguráció segítségével felvehetjük a Spring Security programot a projektünkbe:

@EnableWebSecurity nyilvános osztály A WebSecurityConfig kiterjeszti a WebSecurityConfigurerAdapter {// Bean definíciókat}

A konfiguráció egyéb részletei tartalmazzák a szűrők, a babok és más biztonsági szabályok szükség szerinti meghatározását.

A Spring Data engedélyezéséhez a Spring Security-ben egyszerűen hozzáadjuk ezt a babot WebSecurityConfig:

@Bean public securityEvaluationContextExtension securityEvaluationContextExtension () {return new SecurityEvaluationContextExtension (); }

A fenti meghatározás lehetővé teszi az osztályokra feljegyzett tavaszi adatokra vonatkozó kifejezések automatikus felbontásának aktiválását.

2.2. XML konfiguráció

Az XML-alapú konfiguráció a Spring Security névtér beillesztésével kezdődik:

 ... 

Csakúgy, mint a Java alapú konfigurációban, az XML vagy a névtér alapú konfigurációhoz is hozzáadnánk SecurityEvaluationContextExtension bab az XML konfigurációs fájlhoz:

A SecurityEvaluationContextExtension elérhetővé teszi a Spring Security összes gyakori kifejezését a Spring Data lekérdezéseken belül.

Ilyen gyakori kifejezések a következők: megbízó, hitelesítés, isAnonymous (), hasRole ([szerep]], isAuthenticated, stb.

3. Példa felhasználásra

Vizsgáljuk meg a Spring Data és a Spring Security néhány használati esetét.

3.1. Korlátoz AppUser Mezőfrissítés

Ebben a példában a korlátozást vizsgáljuk AppFelhasználó’S utolsó bejelentkezés mezőfrissítés az egyetlen jelenleg hitelesített felhasználóhoz.

Ez alatt ezt bármikor értjük updateLastLogin metódus elindul, csak a utolsó bejelentkezés a jelenleg hitelesített felhasználó mezője.

Ennek elérése érdekében az alábbi lekérdezést hozzáadjuk a keresőnkhöz UserRepository felület:

@Query ("UPDATE AppUser u SET u.lastLogin =: lastLogin WHERE" + "u.username =? # {Fő?. Felhasználónév}") public void updateLastLogin (dátum lastLogin);

A Spring Data és a Spring Security integráció nélkül általában a felhasználónevet kell argumentumként továbbítanunk updateLastLogin.

Abban az esetben, ha nem megfelelő felhasználói hitelesítő adatokat adnak meg, a bejelentkezési folyamat sikertelen lesz, és nem kell aggódnunk a hozzáférés érvényesítésének biztosításán.

3.2. Fetch Specific AppUser ' Tartalom oldalszámozással

Egy másik forgatókönyv, ahol a Spring Data és a Spring Security tökéletesen működik kéz a kézben, olyan eset, amikor az adatbázisunkból olyan tartalmat kell beolvasnunk, amely a jelenleg hitelesített felhasználó tulajdonában van.

Például, ha van magassugárzó alkalmazásunk, érdemes megjeleníteni az aktuális felhasználó által létrehozott vagy tetszett tweeteket a személyre szabott hírcsatornák oldalán.

Természetesen ez magában foglalhatja az adatbázisunk egy vagy több táblázatával való interakcióra vonatkozó lekérdezések írását. A Spring Data és a Spring Security segítségével ez olyan egyszerű, mint az írás:

nyilvános felület A TweetRepository kiterjeszti a PagingAndSortingRepository {@Query ("twt kiválasztása a tweet twt-ból CSATLAKOZZA a twt.likes-ként, ahol lk? # {fő?. felhasználónév} vagy twt.owner =? # {fő?. felhasználónév}") oldal getMyTweetsAndTheOnesILiked (lapozható) lapozható); }

Mivel azt akarjuk, hogy az eredményeink lapozva legyenek, TweetRepository kiterjed PagingAndSortingRepository a fenti interfész definícióban.

4. Következtetés

A tavaszi adatok és a tavaszi biztonsági integráció nagy rugalmasságot jelent a tavaszi alkalmazások hitelesített állapotainak kezelésében.

Ebben a munkamenetben megvizsgáltuk, hogyan lehet hozzáadni a Spring Security-t a Spring Data-hoz. A Spring Data vagy a Spring Security egyéb hatékony szolgáltatásairól bővebben a Spring Data és a Spring Security cikkek gyűjteményében található.

Szokás szerint a kódrészletek megtalálhatók a GitHubon.