рдпрд╣ рд▓реЗрдЦ рд╕реНрдкреНрд░рд┐рдВрдЧ рдкреНрд░реЛрдлреЗрд╢рдирд▓ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрд╢рди рдкреНрд░реЗрдк рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╣реИред
рдпрд╣ рд╡рд╕рдВрдд рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд╡рд┐рд╖рдп рдФрд░ рдЙрд╕ рдкрд░ рдореБрдЦреНрдп рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░реЗрдЧрд╛ред
рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХреА рддреИрдпрд╛рд░реА рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
тЖУ рдЕрдиреНрдп рд▓реЗрдЦ рд╕рд╛рдордЧреНрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд▓рд┐рдВрдХ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ available

рд╕реНрд╡рдпрдВ рдкреНрд░рд╢реНрди:
рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреНрдпрд╛ рд╣реИ?рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИред
рд╡рд╕рдВрдд рдореЗрдВ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ:
- рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкрд╛рд╕рд╡рд░реНрдб рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо UsernamePasswordAuthenticationToken рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдСрдереЗрдВрдЯрд┐рдХреЗрд╢рди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
- рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдЯреЛрдХрди
AuthenticationManager
рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдпрджрд┐ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ AM рдкреЙрдкреНрдпреБрд▓реЗрдЯреЗрдб
Authentication
рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реМрдЯрд╛рддрд╛ рд╣реИ - рд╕реБрд░рдХреНрд╖рд╛ рд╕рдВрджрд░реНрдн рдХреЛ
SecurityContextHolder.getContext().setAuthentication(...)
рд╕реЗрдЯ рдХрд░рдХреЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ SecurityContextHolder.getContext().setAuthentication(...)
рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рднреВрдорд┐рдХрд╛ рд╣реИред рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рджреМрд░рд╛рди, рдпрд╣ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдВрд╕рд╛рдзрди рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рдЕрдзрд┐рдХрд╛рд░ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред
рдкреНрд░рдХреНрд░рд┐рдпрд╛:
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкреНрд░рдореБрдЦ (рдкреНрд░рд┐рдВрд╕рд┐рдкрд▓) рджреНрд╡рд╛рд░рд╛, рдЙрд╕рдХреА рднреВрдорд┐рдХрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рднреВрдорд┐рдХрд╛ рд╕рдВрд╕рд╛рдзрди рднреВрдорд┐рдХрд╛ рдХреЗ рд╡рд┐рд░реБрджреНрдз рдЬрд╛рдБрдЪ рдХреА рдЧрдИ
рдкрд╣рд▓реЗ, рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╣реЛрддрд╛ рд╣реИред
рд╕реБрд░рдХреНрд╖рд╛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ?рд╕реНрдкреНрд░рд┐рдВрдЧ рдПрдУрдкреА рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬреЛ рдХрд┐ AbstractSecurityInterceptor рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред
рдпрд╣ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕реБрд░рдХреНрд╖рд╛ рд╡реЗрдм рдЕрд╡рд╕рдВрд░рдЪрдирд╛ рд╕рд░реНрд╡рд▓реЗрдЯ рдлрд┐рд▓реНрдЯрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
рдкрд╣рд▓рд╛ рдЪрд░рдг DelegatingFilterProxy
рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реИред рд╡рд╣ FilterChainProxy
рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ FilterChainProxy
ред
FilterChainProxy
рдПрдХ рдмреАрди рд╣реИ рдЬреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ SecurityFilterChain
рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред
SeccurityFilterChain
рдлрд╝рд┐рд▓реНрдЯрд░ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдз рдореЗрдВ URL рдХреА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИред

рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╡рд╕рдВрдд рд╕реБрд░рдХреНрд╖рд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВSecurityContextHolder
- рдЗрд╕рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ SecurityContext рдХреА рдкрд╣реБрдВрдЪ рдФрд░ рд╕рдореНтАНрдорд┐рд▓рд┐рдд рд╣реИред
SecurityContext
- рдСрдереЗрдВрдЯрд┐рдХреЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд╛рд▓реА рд╕реНрдкреНрд░рд┐рдВрдЧ рд╕рд┐рдХреНрдпреЛрд░рд┐рдЯреА рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред
Authentication
- рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдпрд╛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд┐рдП рдЧрдП рдкреНрд░рд┐рдВрд╕рд┐рдкрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЛрдХрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдЙрди рд╢рдХреНрддрд┐рдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдкреНрд░рд┐рдВрд╕рд┐рдкрд▓ рдХреА рдкрд╣реБрдВрдЪ рд╣реИред
рджреА рдЧрдИ GrantedAuthority
- GrantedAuthority
рдкреНрд░рд╛рдЪрд╛рд░реНрдп рдХреЛ рджрд┐рдП рдЧрдП рдЕрдзрд┐рдХрд╛рд░ рдХреЛ рд╕рдорд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИред
UserDetails
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА UserDetails
: рдкрд╛рд╕рд╡рд░реНрдб, рд▓реЙрдЧрд┐рди, рдЕрдиреБрдорддрд┐рдпрд╛рдБред рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдлрд▓ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рдмрд╛рдж рдСрдереЗрдВрдЯрд┐рдХреЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
UserDetailsService
- рдпрд╣ рд╕реЗрд╡рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА (рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдореЛрд░реА, рдбреЗрдЯрд╛рдмреЗрд╕, рдЖрджрд┐) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИ рдФрд░ рдЙрд╕реЗ UserDetails рдореЗрдВ рдбрд╛рд▓рддреА рд╣реИред
рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкреНрд░реЙрдХреНрд╕реА рдлрд╝рд┐рд▓реНрдЯрд░ рдХреНрдпрд╛ рд╣реИ?DelegatingFilterProxy
рд╡рд░реНрдЧ рдПрдХ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ javax.Servlet.Filter
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдлрд┐рд▓реНрдЯрд░ рд╣реИ рдЬреЛ рдЕрдиреНрдп рдмреАрдиреНрд╕ рдХреЛ рдХрд╛рдо рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдлрд┐рд▓реНрдЯрд░ рднреА рд╣реИрдВред
рд╕реБрд░рдХреНрд╖рд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреНрдпрд╛ рд╣реИ?рдлрд╝рд┐рд▓реНрдЯрд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ SecurityFilterChain
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рд╕реНрдкреНрд░рд┐рдВрдЧ рд╕реБрд░рдХреНрд╖рд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди DefaultSecurityFilterChain рд╣реИред
DSFC рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрдИ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдЕрдиреБрд░реЛрдз рдорд┐рд▓рд╛рдирдХрд░реНрддрд╛ рд╣реИред рд╢реЗрд╖ рдкреИрд░рд╛рдореАрдЯрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рд╣реИрдВ рдЬреЛ рд╕рд░реНрд╡рд▓реЗрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдлрд╝рд┐рд▓реНрдЯрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ред рдпрд╣рд╛рдБ DSFC рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЧрдП рд╕рднреА рдлрд╝рд┐рд▓реНрдЯрд░ рд╣реИрдВ:
ChannelProcessingFilter
SecurityContextPersistenceFilter
ConcurrentSessionFilter
- рдХреЛрдИ рднреА рдлрд╝рд┐рд▓реНрдЯрд░:
UserNamePasswordAuthenticationFilter
/ CasAythenticationFilter
/ BasicAuthenticationFilter
SecurityContextHolderAwareRequestFilter
JaasApiIntegrationFilter
RemeberMeAuthenticationFilter
AnonymusAuthenticationFilter
ExceptionTranslationFilter
FilterSecurityInterceptor
рд╕реБрд░рдХреНрд╖рд╛ рд╕рдВрджрд░реНрдн рдХреНрдпрд╛ рд╣реИ?рдкреНрд░рд╛рдердорд┐рдХ рд╡рд╕реНрддреБ рдПрдХ SecurityContextHolder
ред рдпрд╣ рд╡рд╣ рд╕реНрдерд╛рди рд╣реИ рдЬрд╣рд╛рдВ рд╡рд░реНрддрдорд╛рди рд╕реБрд░рдХреНрд╖рд╛ рд╕рдВрджрд░реНрдн рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╡рд░рдг рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЖрд╡реЗрджрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд┐рдВрд╕рд┐рдкрд▓ рдХрд╛ рд╡рд┐рд╡рд░рдгред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, ThreadLocal
рдЙрдкрдпреЛрдЧ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
getContext()
рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯ SecurityContext
ред рдпрд╣ рдЖрдкрдХреЛ рдПрдХ Authentication
рд╡рд╕реНрддреБ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
Authentication
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреБрдгреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ:
- рдкреНрд░рд╛рдЪрд╛рд░реНрдп рдХреЛ рджреА рдЧрдИ рд╢рдХреНрддрд┐рдпреЛрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рдЪрд╛рди рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ (рд▓реЙрдЧрд┐рди, рдкрд╛рд╕рд╡рд░реНрдб)
- рд╡рд┐рд╡рд░рдг - рдЬреЛрдбрд╝реЗрдВред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЬрд╛рдирдХрд╛рд░реАред рдЕрд╢рдХреНрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ
- рдкреНрд░рдореБрдЦ
- рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдзреНрд╡рдЬ - рдмреВрд▓рд┐рдпрди рдЪрд░ рдЬреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдкреНрд░рд╛рдЪрд╛рд░реНрдп рдиреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрд░реАрдХреНрд╖рд╛ рдЙрддреНрддреАрд░реНрдг рдХреА рд╣реИ
рд╡рд┐рд╢рд┐рд╖реНрдЯ URL рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрд▓рд┐рдХ рдЕрд╡рд░реЛрдзрди рдХреИрд╕реЗ рд╕реЗрдЯ рдХрд░реЗрдВ? @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests()
AntMatchers рдФрд░ mvcMatchers () рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ * рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ?рдЗрд╕ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЕрд░реНрде рд╣реИ "рдХреЛрдИ рднреАред"
2 рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:
*
- рдХреЗрд╡рд▓ рдЙрд╕реА рд╕реНрддрд░ рдкрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕ рд╕реНрддрд░ рдкрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреИрдЯрд░реНрди "/ рдЖрджреЗрд╢ / *" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдЧрд╛ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ
/ рдЖрджреЗрд╢ / рдПрд▓рд┐рдпрдВрд╕ рдпрд╛ / рдЖрджреЗрд╢ / 1, рд▓реЗрдХрд┐рди рдирд╣реАрдВ / рдЖрджреЗрд╢ / рд╡рд┐рджреЗрд╢реА / 1ред
**
- рд╕рднреА рд╕реНрддрд░реЛрдВ рдкрд░ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рддрд╛ рд╣реИред
рдХрд┐рд╕реА рднреА рдЕрдиреБрд░реЛрдз рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рдПрдЧреА, / рдЖрджреЗрд╢ / рдПрд▓рд┐рдпрдВрд╕, / рдЖрджреЗрд╢ / 1, / рдЖрджреЗрд╢ / рд╡рд┐рджреЗрд╢реА / 1ред
рдПрдВрдЯреАрдореИрдЯрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ mvcMatcher рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдХреНрдпреЛрдВ рд╣реИ?рдХреНрдпреЛрдВрдХрд┐ antMatcher(тАЬ/serviceтАЭ)
рдХреЗрд╡рд▓ тАЬ/serviceтАЭ
рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдкрде рдХреЛ рдореИрдк рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ mvcMatcher(тАЬ/serviceтАЭ)
тАЬ/serviceтАЭ
, тАЬ/service.htmlтАЭ
, "/service.abc" рдХреЛ рдореИрдк рдХрд░рддрд╛ рд╣реИ ред
рдХреНрдпрд╛ рд╕реНрдкреНрд░рд┐рдВрдЧ рд╕рдкреЛрд░реНрдЯ рдкрд╛рд╕рд╡рд░реНрдб рд╣реИрд╢рд┐рдВрдЧ рд╣реИ? рдирдордХ рдХреНрдпрд╛ рд╣реИ?рд╣рд╛рдБ, рдпрд╣ рдХрд░рддрд╛ рд╣реИред рд╣реИрд╢рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╛рд╕рд╡рд░реНрдбрдЗрдиреНрдХреЛрдбрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рдзрд┐ рд╣реИ:
static PasswordEncoder createDelegatingPasswordEncoder()
, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ DelegatePasswordEncoder
рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рдкрд╛рд╕рд╡рд░реНрдб рд╣реИрд╢ рдорд╛рди рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирдордХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рдХреНрд░рдо рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЯреЗрдХреНрд╕реНрдЯ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рд╣реИрд╢ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирдордХ рд╣реИрд╢ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдПрдХ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЙрдЧрд┐рди рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдл рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рд╣реИрд╢ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдкрдХреЛ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдЗрд╕реЗ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ?рд╕реНрдкреНрд░рд┐рдВрдЧ рд╕реБрд░рдХреНрд╖рд╛ рдмреАрдиреНрд╕ рдореЗрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рдВрд░рдХреНрд╖рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдореЗрдВ)ред рдпрд╣ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░рдд рд╣реИред
рдЗрд╕реЗ @EnableGlobalMethodSecurity
рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
@RolesAllowed рдПрдиреЛрдЯреЗрд╢рди рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ?рдпрд╣ рдПрдиреЛрдЯреЗрд╢рди JSR-250 рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
@RolesAllowed
рдЖрдкрдХреЛ рднреВрдорд┐рдХрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдзрд┐рдпреЛрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдпрдВрддреНрд░рдХ рд╡рд░реНрдЧ рдореЗрдВ) рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг: @RolesAllowed(тАЬADMINтАЭ)
рдХреЗрд╡рд▓ ADMIN
рднреВрдорд┐рдХрд╛ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛
рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ @Configuration рдХреНрд▓рд╛рд╕ рдкрд░ @EnableGlobalMethodSecurity(jsr250Enabled=true)
рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ + рдЖрдкрдХреЛ рдЗрд╕ рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рдХреНрд▓рд╛рд╕рдкреИрде рдореЗрдВ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╣рдореЗрдВ @PreAuthorize рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдПрдВ@PreAuthorize
рдЖрдкрдХреЛ рд╕реНрдкреЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдзрд┐ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ @EnableGlobalMethodSecurity(prePostEnabled=true)
рд╕реЗрдЯ @EnableGlobalMethodSecurity(prePostEnabled=true)
рдЗрди рд╕рднреА рдПрдиреЛрдЯреЗрд╢рдиреЛрдВ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?рдПрдВрдб-рдЯреВ-рдПрдВрдб рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдкреНрд░рд┐рдВрдЧ рдПрдУрдкреА (рдкреНрд░реЙрдХреНрд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред