2013년 9월 6일 금요일

Spring Security - 한 유저 동시 접속 막기

Spring Security - 한 유저 동시 접속 막기




만약 한명의 유저가 여러번 로그인하는 것을 막고 싶다면 아래와 같이 설정한다.

먼저 web.xml 에 listener를 등록한다.

<listener>
    <listener-class>
      org.springframework.security.web.session.HttpSessionEventPublisher
    </listener-class>
  </listener>

다음으로 Application Context에 아래 태그를 추가한다.

  <http>
    ...
    <session-management>
        <concurrency-control max-sessions="1" />
    </session-management>
  </http>


이렇게 하면 두번째 로그인 시 먼저 로그인한 것은 무효화된다.

만약 나중에 로그인 한 것을 막고 싶다면 아래와 같이 설정한다.

  <http>
    ...
    <session-management>
        <concurrency-control max-sessions="1" error-if-maximum-exceeded="true" />
    </session-management>
  </http>


이러한 설정으로 인해 거부된 사용자는 form-based login방식이 쓰여지고 있다면 authentication-failure-url 로 보내지게 되는데, 그렇지 않다면 402에러와 같은 내용이 사용자에게 전달된다. 만약 에러페이지를 설정하고 싶다면, session-management 요소에 session-authentication-error-url 속성을 추가하면 된다.

댓글 없음:

댓글 쓰기