Skip to content

πŸ›‘ ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ c Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΈ ΠΏΡ€Π°Π²Π°ΠΌΠΈ доступа Π½Π° основС Ρ€ΠΎΠ»Π΅ΠΉ Π½Π° стСкС: Spring Boot, Spring Security, REST, MySQL, Maven

Notifications You must be signed in to change notification settings

a-parfenov/SpringSecurityRest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

7 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SpringSecurityRest

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ c Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΈ ΠΏΡ€Π°Π²Π°ΠΌΠΈ доступа Π½Π° основС Ρ€ΠΎΠ»Π΅ΠΉ Π½Π° стСкС:

Spring Boot, Spring Security, REST, Maven, Java 8 Stream API


ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Π½Π° основС Ρ‚Ρ€Π΅Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Π½ΠΈΠΉ:

  1. РСализация сохранСния Π² Π±Π°Π·Ρƒ MySQL, JPA(Hibernate)
  2. РСализация ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π½Π° Bootstrap (js)
  3. РСализация REST ΠΈ AJAX ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ²

Π‘ΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Ρ‹:

Π‘Π½ΠΈΠΌΠΎΠΊ экрана 2022-08-21 Π² 12 00 52 Π‘Π½ΠΈΠΌΠΎΠΊ экрана 2022-08-21 Π² 12 01 12

Π‘Π½ΠΈΠΌΠΎΠΊ экрана 2022-08-21 Π² 12 01 31 Π‘Π½ΠΈΠΌΠΎΠΊ экрана 2022-08-21 Π² 12 01 45


Π—Π°Π΄Π°Π½ΠΈΠ΅ 1

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Spring Security позволяСт Π½Π°ΠΌ Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ ΠΏΡ€Π°Π²Π° доступа, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… исполнСниС Π±Π΅Π· Ρ€ΡƒΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ. Spring Security базируСтся Π½Π° 2Ρ… интСрфСйсах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ связь сущностСй с ΡΠ΅ΠΊΡŒΡŽΡ€Π½ΠΎΡΡ‚ΡŒΡŽ: UserDetails ΠΈ GrantedAuthority. UserDetails - Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ систСмой ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ. GrantedAuthority - ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π°Ρ ΠΏΡ€Π°Π²Π° ΡŽΠ·Π΅Ρ€Π°. Оба эти интСрфСйса ΠΈΠΌΠ΅ΡŽΡ‚ мноТСство Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ: просмотритС класс WebSecurityConfig, Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ configure() с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ настроСк userDetailsService() ΠΌΡ‹ собираСм СдинствСнный Π½Π° всю ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ экзСмпляр UserDetails с ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΌ user , Π° Π΅Π³ΠΎ Ρ€ΠΎΠ»ΡŒ β€œUSER” Ρ‚Π°ΠΊ ΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π° Π² экзСмпляр GrantedAuthority.

Π’Π°ΠΊ ΠΆΠ΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ jdbc-Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΏΡƒΡ‚Π΅ΠΌ написания запроса, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Ρ€ΠΎΠ»ΡŒ. Как Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, Ρ‚Π°ΠΊΠΈΠ΅ способы максимально просты, Π½ΠΎ Π»ΠΈΡˆΠ΅Π½Ρ‹ достаточной гибкости, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ настройки выглядит ΠΊΠ°ΠΊ имплСмСнтация UserDetails ΠΈ GrantedAuthority Π² классах-сущностях с ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

Рассмотрим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. НовыС классы:

  • WebSecurityConfig- настройка ΡΠ΅ΠΊΡŒΡŽΡ€Π½ΠΎΡΡ‚ΠΈ ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ URL, Π° Ρ‚Π°ΠΊΠΆΠ΅ настройка UserDetails ΠΈ GrantedAuthority.
  • LoginSuccessHandler - хэндлСр, содСрТащий Π² сСбС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ дСйствий ΠΏΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. НапримСр, Ρ‚ΡƒΡ‚ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с Ρ€ΠΎΠ»ΡŒΡŽ Π°Π΄ΠΌΠΈΠ½Π° Π½Π° Π°Π΄ΠΌΠΈΠ½ΠΊΡƒ послС Π»ΠΎΠ³ΠΈΠ½Π°, Π° с Ρ€ΠΎΠ»ΡŒΡŽ ΡŽΠ·Π΅Ρ€ Π½Π° Π³Π»Π°Π²Π½ΡƒΡŽ страницу сайта ΠΈ Ρ‚.ΠΏ.
  1. ΠŸΠ΅Ρ€Π΅Π½Π΅ΡΠΈΡ‚Π΅ классы ΠΈ зависимости ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ.
  2. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ класс Role ΠΈ свяТитС User с ролями Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡŽΠ·Π΅Ρ€ ΠΌΠΎΠ³ ΠΈΠΌΠ΅Ρ‚ΡŒ нСсколько Ρ€ΠΎΠ»Π΅ΠΉ.
  3. Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Role ΠΈ User интСрфСйсами GrantedAuthority ΠΈ UserDetails соотвСтствСнно. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ настройку ΡΠ΅ΠΊΡŒΡŽΡ€Π½ΠΎΡΡ‚ΠΈ с inMemory Π½Π° userDetailService.
  4. ВсС CRUD-ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ страницы для Π½ΠΈΡ… Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ с Ρ€ΠΎΠ»ΡŒΡŽ admin ΠΏΠΎ url: /admin/.
  5. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ с Ρ€ΠΎΠ»ΡŒΡŽ user Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ своСй домашнСй страницС /user, Π³Π΄Π΅ выводятся Π΅Π³ΠΎ Π΄Π°Π½Π½Ρ‹Π΅. Доступ ΠΊ этой страницС Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ с Ρ€ΠΎΠ»ΡŒΡŽ user ΠΈ admin. НС Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎ нСсколько Ρ€ΠΎΠ»Π΅ΠΉ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ!
  6. НастройтС logout с любой страницы с использованиСм возмоТностСй thymeleaf.
  7. НастройтС LoginSuccessHandler Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π°Π΄ΠΌΠΈΠ½Π° послС Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ направляло Π½Π° страницу /admin, Π° ΡŽΠ·Π΅Ρ€Π° Π½Π° Π΅Π³ΠΎ страницу /user.

Π—Π°Π΄Π°Π½ΠΈΠ΅ 2

Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ страниц ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Bootstrap

Π—Π°Π΄Π°Π½ΠΈΠ΅ 3

  1. ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ Rest-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ для вашСго прилоТСния.
  2. ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ (Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅) Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΌΠΎΠ΄Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΊΠΎΠ½ ΠΈ Ρ‚.Π΄. Π½Π° JS c ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Fetch API, допускаСтся использованиС JQuery.
  3. ΠŸΡ€ΠΈ Π»ΡŽΠ±Ρ‹Ρ… измСнСниях Π΄Π°Π½Π½Ρ‹Ρ… страница прилоТСния Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ!

About

πŸ›‘ ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ c Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΈ ΠΏΡ€Π°Π²Π°ΠΌΠΈ доступа Π½Π° основС Ρ€ΠΎΠ»Π΅ΠΉ Π½Π° стСкС: Spring Boot, Spring Security, REST, MySQL, Maven

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published