SessionManagementFilter, ConcurrentSessionFilter 작동 프로세스

SessionManagementFilter, ConcurrentSessionFilter 작동 프로세스



SessionManagementFilter는 이전 사용자 세션을 만료하기 위한 전략을 선택합니다.

ConcurrentSessionFilter는 이전 세션이 만료되었는지 여부를 확인하고 값이 true이면 로그아웃 후 오류 페이지로 응답합니다.


인증을 시도하면 UsernamePasswordAuthenticationFilter가 인증 프로세스를 시작합니다.

이 필터는 먼저 ConcurrentSessionControlAuthenticationStrategy를 호출합니다.

이 클래스는 동시 세션 제어를 처리합니다.

두 번째 changeSessionIdAuthenticationStrategy를 호출합니다.

이 클래스는 세션 수정 보호를 처리합니다.

셋째, RegisterSessionAuthenticationStrategy 클래스가 호출됩니다.

이 클래스는 사용자의 세션을 등록하고 재정의합니다.

user1과 user2가 같은 계정으로 로그인하면 위와 같은 경로로 user1의 session1이 생성되어 인증에 성공한다.

user2가 로그인하고 session.expireNow()가 세션 만료 전략으로 설정되면 user2는 동일한 방식으로 session2를 생성하고 인증에 성공합니다.

동일한 계정으로 두 개의 세션이 생성되었습니다.

그런 다음 user1이 서버에 액세스하면 concurrentsessionfilter는 세션이 만료되었는지 확인합니다.

session.isExpired가 true이므로 로그아웃 처리 후 오류 페이지가 반환됩니다.