2015-01-23 3 views
0

Spring MVC에서는 다른 USER ROLES에 대해 다른 max-session을 사용하고 싶습니다. 예를 들어, "admin"역할은 3 개의 max-session을 사용하도록 허용되어야하고 "user"역할은 단지 1 개의 max-session을 사용하도록 허용되어야합니다.사용자 역할을위한 max-sessions 설정하기

spring-security.xml에서는 모든 사용자에 대해 설정할 수 있지만 설정은 가능합니다. 나는 그것을 성취 할 수 없다. 역할을 현명하게 달성 할 수 있습니까?

스프링 security.xml

... 
<http auto-config="true" use-expressions="true"> 
    ... 
    <session-management invalid-session-url="/"> 
     <concurrency-control max-sessions="1" expired-url="/" 
      error-if-maximum-exceeded="false" /> 
    </session-management> 
</http> 
<authentication-manager> 
    <authentication-provider> 
     <password-encoder ref="encoder" /> 
     <jdbc-user-service data-source-ref="dataSource" 
      users-by-username-query="SELECT USERNAME, PASSWORD, ENABLED FROM M_AD_USERS WHERE USERNAME=?" 
      authorities-by-username-query="SELECT USERNAME, ROLE FROM M_AD_USER_ROLES WHERE USERNAME=?" /> 
    </authentication-provider> 
</authentication-manager> 
... 

답변

0

은 고도로 구성이기 때문에 스프링 프레임 워크의 아름다움입니다.

  1. 맞춤 SessionManagementFilter를 구성하고 POSITION = SESSION_MANAGEMENT_FILTER에서 사용하십시오.

  2. 사용자 정의 (재정의 된) ConcurrentSessionControlStrategy를 정의하고이 구성을 통해 max sessions 구성을 통해 맵을 유지 관리하십시오.

  3. ConcurrentSessionControlStrategy의 overAndAuthentication() 메서드에서이 맵을 사용하여 역할을 기반으로 사용자 세션의 유효성을 검사하고 저장합니다.

희망적입니다.

+0

유용한가요 아니면 몇 가지 코드 예가 ​​필요합니까? –

관련 문제