Jarné odhlásenie z zabezpečenia

1. Prehľad

Tento článok nadväzuje na našu príručku Prihlásenie do formulára a zameria sa na to, ako konfigurovať Odhláste sa s jarným zabezpečením.

2. Základná konfigurácia

Základné usporiadanie Funkcia jarného odhlásenia pomocou odhlásiť sa() metóda je dosť jednoduchá:

@Configuration @EnableWebSecurity verejná trieda SecSecurityConfig rozširuje WebSecurityConfigurerAdapter {@Override chránená neplatná konfigurácia (konečná HttpSecurity http) vyvolá výnimku {http // ... .logout () // ...} // ...}

A pomocou konfigurácie XML:

 ...  

Element umožňuje predvolený mechanizmus odhlásenia - ktorý je nakonfigurovaný na použitie nasledujúceho webová adresa na odhlásenie: /odhlásiť sa ktorý býval / j_spring_security_logout pred jarnou bezpečnosťou 4.

3. JSP a odkaz na odhlásenie

V pokračovaní tohto jednoduchého príkladu je spôsob poskytovania a odkaz na odhlásenie vo webovej aplikácii je:

Odhlásiť sa 

4. Pokročilé prispôsobenie

4.1. logoutSuccessUrl ()

Po úspešnom vykonaní procesu odhlásenia Spring Security presmeruje používateľa na zadanú stránku. Predvolene je to koreňová stránka (“/”) ale toto je konfigurovateľné:

// ... .logout () .logoutSuccessUrl ("/ afterlogout.html") // ...

To je možné vykonať aj pomocou konfigurácie XML:

V závislosti od aplikácie je dobrým zvykom presmerovať používateľa späť na prihlasovaciu stránku:

// ... .logout () .logoutSuccessUrl ("/ login.html") // ...

4.2. odhlásiť sa ()

Podobne ako iné predvolené nastavenia v Spring Security, aj URL, ktoré v skutočnosti spúšťa mechanizmus odhlásenia, má predvolenú hodnotu - /odhlásiť sa.

Je však dobré zmeniť túto predvolenú hodnotu, aby sa zabezpečilo, že nebudú zverejnené žiadne informácie o tom, aký rámec sa používa na zabezpečenie aplikácie:

.logout () .logoutUrl ("/ perform_logout")

A prostredníctvom XML:

4.3. invalidateHttpSession a deleteCookies

Tieto dva rozšírené atribúty riadia neplatnosť relácie, ako aj zoznam súborov cookie, ktoré sa majú odstrániť, keď sa používateľ odhlási. Ako taký, invalidateHttpSession umožňuje nastaviť reláciu tak, aby nebola zneplatnená pri odhlásení (je to) pravda predvolene).

The deleteCookies metóda je tiež jednoduchá:

.logout () .logoutUrl ("/ perform_logout") .invalidateHttpSession (true) .deleteCookies ("JSESSIONID")

A verzia XML:

4.4. odhlásenieSuccessHandler ()

Pre pokročilejšie scenáre, kde priestor názvov nie je dostatočne flexibilný, LogoutSuccessHandler fazuľa z jarného kontextu môže byť nahradená vlastným odkazom:

@Bean public LogoutSuccessHandler logoutSuccessHandler () {vrátiť nový CustomLogoutSuccessHandler (); } // ... .logout () .logoutSuccessHandler (logoutSuccessHandler ()); // ...

Ekvivalentná konfigurácia XML je:

 ... 

akýkoľvek vlastná logika aplikácie, ktorá musí byť spustená, keď sa používateľ úspešne odhlási je možné implementovať pomocou vlastného nástroja na úspešné odhlásenie. Napríklad - jednoduchý kontrolný mechanizmus, ktorý sleduje poslednú stránku, na ktorej sa používateľ nachádzal, keď spustil odhlásenie:

verejná trieda CustomLogoutSuccessHandler rozširuje SimpleUrlLogoutSuccessHandler implementuje LogoutSuccessHandler {@Autowired private AuditService auditService; @Override public void onLogoutSuccess (požiadavka HttpServletRequest, odpoveď HttpServletResponse, autentifikácia overenia) hodí IOException, ServletException {String refererUrl = request.getHeader ("Referer"); auditService.track ("Odhlásiť sa z:" + refererUrl); super.onLogoutSuccess (požiadavka, odpoveď, autentifikácia); }}

Majte tiež na pamäti, že táto vlastná fazuľa má zodpovednosť za určenie cieľa, na ktorý je užívateľ po odhlásení smerovaný. Z tohto dôvodu spárovanie odhlásiť saSuccessHandler atribút s odhlásiť sa nebude fungovať, pretože obe majú podobnú funkčnosť.

5. Záver

V tomto príklade sme začali nastavením jednoduchej vzorky odhlásenia pomocou nástroja Spring Security a potom sme diskutovali o dostupných pokročilých možnostiach.

Implementáciu tohto jarného odhlásenia nájdete v projekte GitHub - jedná sa o projekt založený na Eclipse, takže by malo byť ľahké ho importovať a spustiť tak, ako je.

Keď je projekt spustený lokálne, k vzorovému kódu HTML je možné pristupovať na adrese:

//localhost:8080/spring-security-mvc-login/login.html