Proljetni podaci s proljetnom sigurnošću

1. Pregled

Spring Security pruža dobru podršku za integraciju s Spring Data. Dok prva obrađuje sigurnosne aspekte naše aplikacije, druga pruža prikladan pristup bazi podataka koja sadrži podatke aplikacije.

U ovom ćemo članku razgovarati o tome kako Spring Security se može integrirati s Spring Dataom kako bi se omogućilo više korisničkih upita.

2. Proljetna sigurnost + proljetna konfiguracija podataka

U našem uvodu u Spring Data JPA vidjeli smo kako postaviti Spring Data u proljetni projekt. Da bismo omogućili proljetnu sigurnost i proljetne podatke, kao i obično, možemo usvojiti ili Java ili XML-zasnovanu konfiguraciju.

2.1. Java konfiguracija

Sjetimo se da iz obrasca za prijavu Spring Security (odjeljci 4 i 5) možemo dodati Spring Security u naš projekt pomoću konfiguracije na temelju bilješki:

@EnableWebSecurity javna klasa WebSecurityConfig proširuje WebSecurityConfigurerAdapter {// definicije graha}

Ostali detalji o konfiguraciji uključuju definiciju filtara, graha i druga sigurnosna pravila prema potrebi.

Da bismo omogućili Spring Data u Spring Security, jednostavno dodamo ovaj grah u WebSecurityConfig:

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

Gornja definicija omogućuje aktiviranje automatskog rješavanja izraza specifičnih za proljeće označenih na klasama.

2.2. XML konfiguracija

Konfiguracija temeljena na XML-u započinje uključivanjem prostora imena Spring Security:

 ... 

Baš kao u konfiguraciji zasnovanoj na Javi, za XML ili konfiguraciju temeljenu na prostoru imena dodali bismo SecurityEvaluationContextExtention bean u XML datoteku za konfiguraciju:

Definiranje SecurityEvaluationContextExtention čini sve uobičajene izraze u Spring Security dostupnim unutar upita Spring Data.

Takvi uobičajeni izrazi uključuju glavnica, provjera autentičnosti, isAnonymous (), hasRole ([uloga]), isAuthenticated, itd.

3. Primjer upotrebe

Razmotrimo neke slučajeve upotrebe Spring Data i Spring Security.

3.1. Ograničiti AppUser Ažuriranje polja

U ovom ćemo se primjeru osvrnuti na ograničavanje AppKorisnik‘S zadnja prijava ažuriranje polja za jedinog trenutno ovjerenog korisnika.

Pod tim mislimo na bilo kad updateLastLogin metoda se aktivira, ona samo ažurira zadnja prijava polje trenutno ovjerenog korisnika.

Da bismo to postigli, dodamo upit u nastavku na naš UserRepository sučelje:

@Query ("UPDATE AppUser u SET u.lastLogin =: lastLogin WHERE" + "u.username =? # {Glavni? .Username}") javna void updateLastLogin (Datum lastLogin);

Bez integracije Spring Data i Spring Security obično bismo morali prenijeti korisničko ime kao argument updateLastLogin.

U slučaju da se daju pogrešne vjerodajnice, postupak prijave neće uspjeti i ne trebamo se truditi oko provjere valjanosti pristupa.

3.2. Dohvaćanje određeno AppUser ' Sadržaj s paginacijom

Sljedeći je scenarij u kojem Spring Data i Spring Security savršeno rade ruku pod ruku slučaj u kojem moramo dohvatiti sadržaj iz naše baze podataka koji je u vlasništvu trenutno ovjerenog korisnika.

Na primjer, ako imamo aplikaciju za visokotonce, možda ćemo htjeti prikazati tweetove koje je trenutni korisnik stvorio ili im se svidio na njihovoj stranici s prilagođenim feedovima.

Naravno, to može uključivati ​​pisanje upita za interakciju s jednom ili više tablica u našoj bazi podataka. S Spring Data i Spring Security ovo je jednostavno poput pisanja:

javno sučelje TweetRepository proširuje PagingAndSortingRepository {@Query ("odaberite twt iz Tweet twt PRIDRUŽITE se twt.likes kao lk gdje je lk? # {principal? .username} ili twt.owner =? # {principal? .username}") Stranica getMyTweetsAndTheOnesILiked (Pageable stranica koja se može stranicati); }

Budući da želimo da naši rezultati budu paginirani, naši Repozitorij Tweet proteže se PagingAndSortingRepository u gornjoj definiciji sučelja.

4. Zaključak

Integracija podataka Spring i Spring Security donosi veliku fleksibilnost u upravljanju provjerenim stanjima u aplikacijama Spring.

U ovoj smo sesiji pogledali kako dodati Spring Security u Spring Data. Više o ostalim moćnim značajkama Spring Data ili Spring Security možete pronaći u našoj kolekciji članaka Spring Data i Spring Security.

Kao i obično, isječke koda možete pronaći na GitHubu.