저는 스프링/스프링 - 보안 3.1을 사용 중이며 사용자가 로그 아웃 할 때마다 (또는 세션 시간 초과시) 어떤 조치를 취하고 싶습니다. 나는 로그 아웃을 위해 조치를 취할 수 있었지만, 세션 타임 아웃에 대해서는 작동시키지 못했습니다.로그 아웃/세션 제한 시간이 봄 보안으로 잡기
web.xml에는 ContextLoaderListener 만 지정되어 있습니다 (문제 일 수 있습니까?) 물론 DelegatingFilterProxy.
나는 이와 같이 자동 설정을 사용합니다.
<security:http auto-config="false" use-expressions="false">
<security:intercept-url pattern="/dialog/*"
access="ROLE_USERS" />
<security:intercept-url pattern="/boa/*"
access="ROLE-USERS" />
<security:intercept-url pattern="/*.html"
access="ROLE-USERS" />
<security:form-login login-page="/auth/login.html"
default-target-url="/index.html" />
<security:logout logout-url="/logout"
invalidate-session="true"
delete-cookies="JSESSIONID" success-handler-ref="logoutHandler" />
</security:http>
<bean id="logoutHandler" class="com.bla.bla.bla.LogoutHandler">
<property name="logoutUrl" value="/auth/logout.html"/>
</bean>
로그 아웃 처리기는 사용자가 로그 아웃을 클릭하면 데이터베이스를 호출 할 때 호출됩니다.
하지만 세션 시간 초과를 어떻게 처리합니까?
사용자가 로그인 할 때 세션에 사용자 이름을 주입 한 다음 일반 httpsessionlistener를 사용하고 세션 시간 초과시 동일한 작업을 수행하는 한 가지 방법이 있습니다.
스프링 보안과 비슷한 방식으로 세션이 시간 초과된다는 것을 봄에 알게되면 거기에 접속하여 인증에 액세스하고 여기에서 UserDetails를 가져와 정리를 수행 할 수 있습니다.
내 pov에서 더 나은 솔루션입니다. 내가했던 것처럼 이것을 사용하는 것이 좋습니다. Thx John. Btw : "정상적인"로그 아웃도 처리합니다! –
'Spring Security'를 사용하면서 여기서 언급 한 세션은 HTTPSession과 동일하거나 Spring Security의 세션입니까? 대안으로, 새로운 '봄 세션'구성 요소가 솔루션을 제공하는 것 같습니다. http://docs.spring.io/spring-session/docs/current/reference/html5/#api-redisoperationssessionrepository-sessiondestroyedevent – yathirigan
@yathirigan 확실하지 않습니다. "봄 보안 세션"의 의미. 스프링 시큐리티는 HTTP 세션을 사용하므로 기본적으로 똑같습니다. – John29