개발

스프링 중복 로그인 방지하기

snow-line 2020. 11. 29. 23:44
반응형

스프링 프레임워크를 사용하면서 중복 로그인을 막는 가장 쉬운 방법은

 

스프링 시큐리티의 중복 로그인 방지 기능을 사용하는 방법이다.

 

스프링 시큐리티의 중복 로그인 방지 설정

        http.sessionManagement()
                .maximumSessions(1)
                .maxSessionsPreventsLogin(false)
                .expiredSessionStrategy(this.securitySessionExpiredStrategy())
                .sessionRegistry(this.sessionRegistry);

설정을 간단하게 설명하면 maximumSessions 갯수를 1개로 지정하여 2개 이상 세션이 생성되지 않도록 한다.

 

이 설정을 사용하면 중복 로그인을 어느정도는 막을 수 있으나

 

톰캣에서 세션을 관리하는 어플리케이션에서는

 

가끔씩(?) 중복 로그인이 가능한 경우가 생긴다.

 

(연달아 계속 로그인을 시도해보면 확인할 수 있다.)

 

 

가끔 중복로그인이 발생해도 상관없으면 이 코드만 사용하고

 

중복 로그인을 완벽하게 막아야 하는 경우에는

 

별도로 처리 할 수 있는 로직이 필요하다.

 

* 참고로 Redis에 세션 관리를 할 경우나, OAuth2.0 로그인 기반에서는 해당 현상이 발생하지 않는다.

 

반응형