경주장

[인증 API] 동시 세션제어 본문

스프링/스프링 시큐리티

[인증 API] 동시 세션제어

달리는치타 2022. 2. 6. 18:23

동시 세션 제어

 

- 최대 세션 허용 개수를 초과한 요청이 발생했을 때 어떻게 처리할 것인가

 

Strategy 1 - 이전 사용자 세션 만료   - maxSessionPreventsLogin(false) 기본설정

Strategy 2 - 현재 사용자 인증 실패   - maxSessionPreventsLogin(true)

 

 

http.sessionManagement( ) : 세션 관리 기능이 작동함

http.sessionManagement()
	 .maximumSessions(1)                 // 최대 허용 가능 세션 수 , -1 : 무제한 로그인 세션 허용
      .maxSessionsPreventsLogin(true) // 동시 로그인 차단함,  false : 기존 세션 만료(default)
      .expiredUrl("/expired ")  	        // 세션이 만료된 경우 이동 할 페이지

 

maxSessionPreventsLogin(true) -> 현재 사용자 인증 실패 (SessionAuthenticationException)


maxSessionPreventsLogin(false) -> 기존 사용자 세션 만료 (자원 접근 불가)

두 번째 사용자 로그인 성공

첫번째 사용자가 다시 자원을 요청하면 로그인 페이지로 리다이렉트 되고 로그인 하면 expired페이지로 이동

 

expired페URL을 설정하지 않으면 첫번째 사용자가 자원 요청시

 

이런 응답을 준다.