나의 궁금증 해결 security

최기곤·2021년 1월 20일
0

끄적

목록 보기
2/2

궁금했던점!
스프링시큐리티에서 인증을 처리해주는 과정은 알겠다. 그리고 인증이 성공한다면 SecurityContextHolder에 저장해주는것 까지 알았다. 그렇다면!!!! 내가 계속 궁금했던 점!
어떻게 다음 로그인때는 내가 인증이 된 유저라는걸 아는걸까? 당연하다 생각할 수 있지만 나는 그다음에 접근할때도 결국에는 Filter를 지나고 이때는 User에대한 정보 없이(로그인할때 아이디, 패스워드) 없이 접근할라고 할텐데 이게 어떻게 되는걸까?

찾아낸 것!!
SecurityContextPersistenceFilter: SecurityContextRepository에서 SecurityContext를 가져오거나 저장하는 역할을 한다. 추가적으로 설명하면, Authentication 객체는 필터 체인 상의 최초에 위치한 SecurityContextPersistenceFilter의 (repo)session에 저장된다. 그리고 다음 접속 시에는 (repo)session에서 정보가 담긴 Authentication 객체를 가져올 수 있게 된다. 만약 NullSecurityContextRepository라면 세션저장소에 저장이 되지 못하고 매번 요청마다 인증을 확인해야 한다.

그렇다면 sessionid을 내가 보내는 코드가 없는데 어떻게 sessionid를 브라우저가 알고 나에게 보낼까?

컨테이너가 getsession()을 하면 알아서 생성해서 처리해준다한다...
헐.. 유유

profile
놀면서 일하고 일하면서 놀고~ 해삐~

0개의 댓글