시큐리티 알게된 내용 정리
security-context.xml 참고해서 파악한 시큐리티 로그인 흐름
0. 로그인
1. (내부 컨트롤러)에서 서비스 호출
2. CustomerUserDetailsService
1) read()[우리가 정의해준 메소드]를 통해 직원 DB가져옴
2) DAOMapper.xml 참고
- read() : emp_id, emp_pw, emp_name, emp_level을 가져온다
- 이 값이 세션에 저장됨
3) 가져와서 Member객체에 일단 넣고, 권한(emp_id, emp_level) 데이터는 다시 한번 Auth 객체를 생성해 Member 객체에서 변수로 가진다.
4) 리턴된 Member객체를 컨트롤러로 넘겨줌 (여기서 컨트롤러는 시큐리티가 제공하는 내장 컨트롤러라 확인 불가)
3. (내부 컨트롤러)에서 DB와 비교하여 로그인 처리 후 성공하면 세션에 설정
4. CustomLoginSuccessHandler : 권한에 따라 페이지 이동(redirect)시킴
시큐리티에서 넣어준 세션값 뷰단에서 불러오는 방법
- <sec:authentication property='principal.member.emp_pic' />
- emp_pic대신에 불러오고 싶은 필드명. 나머지는 고정값
시큐리티에서 넣어준 세션값 컨트롤러로 불러오는 방법
1. Get, Post 매핑 모두 : 시큐리티 관련 Principal & Authentication 객체 활용 :
자세한 방법 참고 →https://coding-nyan.tistory.com/127
2. Post매핑에서만 : 뷰단에서 hidden type의 input 만들고 value=<sec~~>해서 컨트롤러에서 name값으로 빼쓰기