Spring Security frissítés
Technológiák: Spring Boot 2.1.3.RELEASE, Spring Security, Thymeleaf, Spring Data JPA, H2, Flyway
Frissítettem a Spring Security cikkemet a legfrissebb Java 11, Spring Framework 5.1.5 és Spring Security 5.1.4 verziókra.
A poszthoz tartozó Spring Security példa projekt elérhető a GitHubon.
Azonban mivel már új projektet kizárólag Spring Boottal érdemes kezdeni, ugyanezen alkalmazást elkészítettem Spring Boottal is. A Spring Security Spring Boottal példa projekt szintén elérhető a GitHubon.
Most nézzük meg a két projekt közötti hasonlóságokat és különbségeket.
A generált, main
metódust tartalmazó BootSecurityApplication
osztályt egészítettük ki
a @EnableWebSecurity
és @EnableGlobalMethodSecurity
annotációkkal,
valamint leszármaztattuk a WebSecurityConfigurerAdapter
osztályból.
Ebben az osztályban írtuk meg a configure
metódust, valamint hoztuk létre a
PasswordEncoder
és UsernameInUrlAuthenticationFailureHandler
beaneket.
Itt állítottuk be a UserDetailsService
-t is.
A többi osztály és Thymeleaf template valójában változatlan. A User
hordozza
a felhasználó entitást, amihez a UserRepository
Spring Data JPA repository
tartozik. A UserService
adja a középső, üzleti logika réteget, és a UserController
a Spring MVC controllert. A UsernameInUrlAuthenticationFailureHandler
osztály
menti el a felhasználónevet a sessionbe sikertelen bejelentkezés esetén, hogy
utána visszaírásra kerüljön az űrlapba.
Az index.html
template a főoldal, a login.html
a bejelentkező űrlap.
Az adatbázis inicializálását itt a Flyway végzi a V1__init.sql
szkript alapján.
A tesztesetek pontosan ugyanolyanok, azzal a különbséggel, hogy a @SpringBootTest
annotációval vannak ellátva.
És most nézzük meg a különbségeket. A Spring Boot alkalmazás esetén nincs szükség
a JPA és a Spring Data JPA konfigurálására, az automatikusan megtörténik. Ugyanígy
nincs szükség az adatbázis elindítására, a DataSource
létrehozására, hiszen azt
is létrehozza.
A SecurityConfig
tartalma került át a BootSecurityApplication
osztályba.
Valamint nincs szükség manuálisan konfigurálni a Thymeleafet. Ezen kívül nincs
szükség a AbstractAnnotationConfigDispatcherServletInitializer
és AbstractSecurityWebApplicationInitializer
leszármazottakra sem.