<security-intercept-url> 설정 후 access 등급이 있는 경우 Login화면으로 변경되며
로그인 성공시 바로
INFO : com.secu.web.SecurityController - ONLY MEMBER 호출
접속시도-> 기본 Login 화면 -> SecurityController
+ error-page="" 설정으로 권한이 없는 아이디로 접속한 경우 바로
INFO : com.secu.web.CommonController - access Denied 출력됨
+ error-page 대신 ref="" 하여 AccessDeinedHandler 추가해줄경우
접속시도->Login->권한이 없는 경우 CustomAccessDeniedHandler (Redirect)-> CommonController(Redirect한곳)
======================================
security-context.xml login-page 설정후에
(권한없으면)
<로그인 실패(패스워드 틀릴경우)>
URI 접속시도 -> 지정한 Login-page =/customLogin -> customLogin.jsp 이동
즉 CommonController의 /customLogin을 거쳐간다.
customLogin.jsp 에서 로그인을 실패할경우
authentication-failure-handler-ref 를 따로 설정하지 않는이상
다시 /customLogin 요청을 하게 된다, 이때 error가 null이 아니므로 msg를
가지고 온다.
<로그인 성공 success-ref="" 설정시>
URI 접속시도 -> 지정한 Login-page =/customLogin -> customLogin.jsp
-> CustomLoginSuccessHandler(ref) -> CustomLoginSuccessHandler 에서 지정한 곳으로 redirect
========================================
logout 처리 부터 하면됨
로그인화면 -> customLoginSuccessHandler (에서 Redirect 이동) ->
member.jsp 로 이동됨
<handler 없을경우>
logout 누르면 -> CommonController 에서 /customLogout 처리 후
-> /customLogin 으로 redirect 진행
<handler 있을경우>
logout 누르면 -> CustomLogoutSuccessHandler 에서 -> 지정한 곳으로
redirect 된다.
================================================
JDBC 연동 후에는
로그인시에 -> JDBC 설정한 user-by-username-query, authentication-by-username-query
를 통해서 ID,PWD확인 후에 성공하면 CustomLoginSuccessHandler 을 거치고
실패할경우 다시 /customLogin이 호출된다.
==================================================
PasswardEncoder 설정이 되어있을경우
login을 시도하면
CustomNoPasswordEncoder(PasswordEncoder)로 이동을 하고 -> matches() 를 통해
패스워드와 암호화된 패스워드를 확인하고 -> 일치할경우 CustomLoginSuccessHandler 호출
-> 그렇지않을 경우 CommonController(/customLogin)을 호출한다.,
==================================================
사용자 정의 DB를 설정한 후
로그인실시 -> CustomUserDetailsService의 loadUserByUsername(String username) 호출 ->
로그인 성공시 -> CustomLoginSuccessHandler 호출 후 내부에 따라 흐름
로그인 실패시 -> 다시 CommonController의 /customLogin 호출
즉
로그인 실시 -> CustomUserDetailsService( loadUserByUsername() 을 통해서
DB에서 저장된 user의 Id, pwd, auth등을 호출함 mapper에 정의한대로
이렇게 가지고온 내용을 UserDetail 객체로 만든후
-> PasswordEncoder 의 matches() 함수를 통해
내가 입력한 비밀번호 rawPassword와 가지고온 encodedPassword를 비교함
이떄 일치하면 로그인 안되면 로그인 실패
'dev > Spring-security' 카테고리의 다른 글
[Spring] Spring security - ApplicationFilterchain, DelegatingFilterProxy (0) | 2022.08.20 |
---|---|
[Spring] Filter (0) | 2022.08.20 |
[Spring] spring security 중간정리 (0) | 2022.08.06 |
[Spring] UserDetailsService 활용 (0) | 2022.08.05 |
[Spring ] JDBC를 이용한 인증/권한 처리 (0) | 2022.08.04 |