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.