2010-01-06 5 views
1

스프링 웹 플로우와 스프링 보안을 사용하는 웹 애플리케이션이 있습니다. 동시성에 문제가 있으며 여기 시나리오가 있습니다.다른 브라우저에서의 스프링 보안 동시성

로그인하여 편집 페이지로 이동하면 내 계정이 이미 해당 작업으로 제한되어있을 때 이미 작업을 수행 할 수 없게됩니다. 세션에서 내 ROLE 저장이 로그인 중에로드 된 이후 자연스럽게 발생합니다. 이를위한 가장 좋은 방법은 무엇입니까? 모든 중요한 작업 또는 제한된 작업에 대해 내 역할을 묻고 세션에서이를 대체해야합니까? 이것은 서버의 오버 헤드가 아닌가?

+0

org.springframework.security.web.authentication.switchuser.SwitchUserFilter에서 사용자의 좋은 예를 볼 수 있습니다? – rodrigoap

+0

반드시 그렇지는 않습니다. 언제 어디서나 사용자의 액세스 권한을 추적 할 수 있습니다. 그렇다면 모든 페이지로드에 대해 사용자의 액세스 권한을 쿼리해야합니까? 싱글 사인온을 생각하고 있었지만 봄과 봄에 웹 플로우를 사용하는 것이 쉬운 지 모르겠습니다. – cedric

답변

0
  • 최근에 권한이 변경된 사용자의 <user id, timestamp>의 캐시를 유지하십시오. 캐시 항목을 두 x의 세션 만기 시간 후에 만료 시키십시오. 세션이 SecurityContext 기존 가진 인식
  • 추가 사용자 정의 필터 : 세션 SecurityContext 누구의 사용자 ID를 최근에 변경된 캐시에 세션의 getLastAccessTime()이 변경 시간 소인보다 이전 Principal 포함
    • 경우, 명시 적으로 새와 사용자를 다시 인증 당국.

이 솔루션은 업그레이드 권한이 모두 알아서하고 시나리오를 다운 그레이드합니다.

당신은 당신은 한 번에 하나의 사용자 페이지에 대한 액세스를 제한 할