스프링에서 중복 로그인을 방지하려면 sessionRegistry를 사용하면 됩니다.
기존의 사용자 세션은 유지하고 새로 시도하는 로그인은 막는 것으로 하겠습니다.
sessionRegistry를 적용하려면 http 태그 안에 session-management 필터를 추가합니다.
그리고 중복 로그인을 막기 위해 concurrency-control 태그를 작성하고 각각의 속성을 다음과 같이 설정합니다.
max-sessions="1" (로그인한 사용자가 동시에 접속할 수 있는 세션의 수)
error-if-maximum-exceeded="true" (true, 중복 로그인이 발생했을 때 기존의 로그인한 사용자 세션은 유지하고 다음에 로그인 시도한 사람은 실패. 반대로 하려면 false)
expired-url="/login/login.do" (세션이 만료되었을 때 이동하는 url)
session-registry-ref="sessionRegistry" (중복 로그인을 관리하는 bean 참조, 61번째 라인에 등록된 bean)
이렇게 작성하고 테스트하면 기존 사용자 세션은 유지되고 그 이후의 로그인 시도는 실패하는 것을 확인할 수 있습니다.
스프링에서 지원하는 중복 로그인 말고 따로 하려면 사용자 세션을 관리하는 bean을 등록해서 사용하면 됩니다.
'dev > 스프링' 카테고리의 다른 글
SSO 로그인 연동 (0) | 2023.01.10 |
---|---|
spring profile 설정 (0) | 2022.09.29 |
Spring SecurityContextHolder (0) | 2022.02.11 |
압축파일 다운로드 (0) | 2022.02.08 |
TooManyResultsException 에러 (0) | 2021.10.22 |