Spring/Spring Security

[Spring Security] 동시 로그인 제한하기(동시 세션 제어)

빅콜팝 2022. 10. 28. 23:18
728x90
반응형

❄️ 설정한 최대 허용 가능 세션을 초과했을 경우


1️⃣ 이전 사용자 세션 만료 처리 (첫 번째 사용자)

: maxSessionsPreventsLogin(false)

 

2️⃣ 현재 사용자 인증 실패 처리

: maxSessionsPreventsLogin(true)

 

해당 기능을 구현하기 위해서는 스프링 시큐리티가 적용되어 있어야 한다.

 

[Spring Security] Spring Security 설정하기

import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.ann..

zhfvkq.tistory.com

 

import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityCustomizer;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.web.SecurityFilterChain;

@Configuration
@RequiredArgsConstructor
public class SecurityConfig {

	...

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        
        ...

        http.sessionManagement() // 세션 관리 (동시 로그인 제한)
                .maximumSessions(1) // 최대 허용 가능 세션 수 (-1 : 무제한)
                .maxSessionsPreventsLogin(true) // true : 로그인 제한 false(default) : 기존 세션 만료
                .expiredUrl("/login") // 세션 만료시 이동 페이지
        ;

        return http.build();
    }

	...

}
728x90
반응형