ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ c Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΈ ΠΏΡΠ°Π²Π°ΠΌΠΈ Π΄ΠΎΡΡΡΠΏΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΎΠ»Π΅ΠΉ Π½Π° ΡΡΠ΅ΠΊΠ΅:
Spring Boot, Spring Security, REST, Maven, Java 8 Stream API
ΠΡΠΎΠ΅ΠΊΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠ΅Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ Π·Π°Π΄Π°Π½ΠΈΠΉ:
- Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΡ Π² Π±Π°Π·Ρ
MySQL
,JPA(Hibernate)
- Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π½Π°
Bootstrap (js)
- Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ
REST
ΠΈAJAX
ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ²
ΠΠΎΠ΄ΡΠ»Ρ Spring Security ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ Π²Π½Π΅Π΄ΡΡΡΡ ΠΏΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±Π΅Π· ΡΡΡΠ½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ. Spring Security Π±Π°Π·ΠΈΡΡΠ΅ΡΡΡ Π½Π° 2Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠ²ΡΠ·Ρ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ Ρ ΡΠ΅ΠΊΡΡΡΠ½ΠΎΡΡΡΡ: UserDetails ΠΈ GrantedAuthority. UserDetails - ΡΠΎ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. GrantedAuthority - ΡΡΡΠ½ΠΎΡΡΡ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠ°Ρ ΠΏΡΠ°Π²Π° ΡΠ·Π΅ΡΠ°. ΠΠ±Π° ΡΡΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΈΠΌΠ΅ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ: ΠΏΡΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΠΊΠ»Π°ΡΡ WebSecurityConfig, Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ configure() Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ userDetailsService() ΠΌΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ Π½Π° Π²ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ UserDetails Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ user , Π° Π΅Π³ΠΎ ΡΠΎΠ»Ρ βUSERβ ΡΠ°ΠΊ ΠΆΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π° Π² ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ GrantedAuthority.
Π’Π°ΠΊ ΠΆΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ jdbc-Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΡΡΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ°, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΡΠΎΠ»Ρ. ΠΠ°ΠΊ Π²Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅, ΡΠ°ΠΊΠΈΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΡ, Π½ΠΎ Π»ΠΈΡΠ΅Π½Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠΉ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ, ΠΏΠΎΡΠΎΠΌΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΊΠ°ΠΊ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ UserDetails ΠΈ GrantedAuthority Π² ΠΊΠ»Π°ΡΡΠ°Ρ -ΡΡΡΠ½ΠΎΡΡΡΡ Ρ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠΎΠ²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ:
- WebSecurityConfig- Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ΅ΠΊΡΡΡΠ½ΠΎΡΡΠΈ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ URL, Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° UserDetails ΠΈ GrantedAuthority.
- LoginSuccessHandler - Ρ ΡΠ½Π΄Π»Π΅Ρ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π² ΡΠ΅Π±Π΅ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΏΡΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ ΡΠΎΠ»ΡΡ Π°Π΄ΠΌΠΈΠ½Π° Π½Π° Π°Π΄ΠΌΠΈΠ½ΠΊΡ ΠΏΠΎΡΠ»Π΅ Π»ΠΎΠ³ΠΈΠ½Π°, Π° Ρ ΡΠΎΠ»ΡΡ ΡΠ·Π΅Ρ Π½Π° Π³Π»Π°Π²Π½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΡΠ°ΠΉΡΠ° ΠΈ Ρ.ΠΏ.
- ΠΠ΅ΡΠ΅Π½Π΅ΡΠΈΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ Π·Π°Π΄Π°ΡΠΈ.
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΊΠ»Π°ΡΡ Role ΠΈ ΡΠ²ΡΠΆΠΈΡΠ΅ User Ρ ΡΠΎΠ»ΡΠΌΠΈ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΡΠ·Π΅Ρ ΠΌΠΎΠ³ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ»Π΅ΠΉ.
- ΠΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Role ΠΈ User ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌΠΈ GrantedAuthority ΠΈ UserDetails ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΡΠ΅ΠΊΡΡΡΠ½ΠΎΡΡΠΈ Ρ inMemory Π½Π° userDetailService.
- ΠΡΠ΅ CRUD-ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ ΡΡΡΠ°Π½ΠΈΡΡ Π΄Π»Ρ Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ ΡΠΎΠ»ΡΡ admin ΠΏΠΎ url: /admin/.
- ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ ΡΠΎΠ»ΡΡ user Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΡΠ²ΠΎΠ΅ΠΉ Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ /user, Π³Π΄Π΅ Π²ΡΠ²ΠΎΠ΄ΡΡΡΡ Π΅Π³ΠΎ Π΄Π°Π½Π½ΡΠ΅. ΠΠΎΡΡΡΠΏ ΠΊ ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Ρ ΡΠΎΠ»ΡΡ user ΠΈ admin. ΠΠ΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ ΠΏΡΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ»Π΅ΠΉ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ!
- ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ logout Ρ Π»ΡΠ±ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ thymeleaf.
- ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ LoginSuccessHandler ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π°Π΄ΠΌΠΈΠ½Π° ΠΏΠΎΡΠ»Π΅ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π½Π°ΠΏΡΠ°Π²Π»ΡΠ»ΠΎ Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ /admin, Π° ΡΠ·Π΅ΡΠ° Π½Π° Π΅Π³ΠΎ ΡΡΡΠ°Π½ΠΈΡΡ /user.
Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΡΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Bootstrap
- ΠΠ°ΠΏΠΈΡΠ°ΡΡ Rest-ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
- ΠΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ Π²ΡΠ²ΠΎΠ΄ (Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅) ΡΠ°Π±Π»ΠΈΡΡ, ΠΌΠΎΠ΄Π°Π»ΡΠ½ΡΡ ΠΎΠΊΠΎΠ½ ΠΈ Ρ.Π΄. Π½Π° JS c ΠΏΠΎΠΌΠΎΡΡΡ Fetch API, Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ JQuery.
- ΠΡΠΈ Π»ΡΠ±ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΡ ΡΡΡΠ°Π½ΠΈΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ!