Всем доброго времени суток. Ситуация такая: используется спринг секьюрити. При при удалении пользователя администратором из приложения я делаю вот так: | Код | public void expireSessions(String username) { // expires all sessions of logged on user with a given user name SessionInformation[] usersessions = sessions.getAllSessions(username, false); if (usersessions != null) { for (SessionInformation session : usersessions) { session.expireNow(); } } }
|
При логауте пользователя делаю так: | Код | SecurityContextLogoutHandler logoutHandler = new SecurityContextLogoutHandler(); SecurityContext sc = (SecurityContext) request.getSession().getAttribute("SPRING_SECURITY_CONTEXT");
facadeService.expireSession(request.getSession().getId()); logoutHandler.logout(request, response, sc.getAuthentication());
return "redirect:index.html";
|
Все работает отлично, пользователя при попытке пройтись по какому то урлу выкидывает на логин форму. Но если сделать вот так: зайти пользователем и сначала выключить томкат, а потом сразу включить, то пользователь сможет спокойно продолжить работать, при том, что я при выключении удаляю все сессии SessionRegistry, а при старте проверяю - там сессий никаких нет вот контекст секьюрити | Код | <?xml version="1.0" encoding="UTF-8"?> <beans:beans xmlns="http://www.springframework.org/schema/security" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.xsd">
<beans:bean id="accessDecisionManager" class="org.springframework.security.vote.AffirmativeBased"> <beans:property name="allowIfAllAbstainDecisions" value="false"/> <beans:property name="decisionVoters"> <beans:list> <beans:bean class="org.springframework.security.vote.RoleVoter"/> <beans:bean class="org.springframework.security.vote.AuthenticatedVoter"/> </beans:list> </beans:property> </beans:bean>
<global-method-security secured-annotations="enabled" access-decision-manager-ref="accessDecisionManager"/>
<http access-decision-manager-ref="accessDecisionManager" access-denied-page="/accessDenied.htm"> <intercept-url pattern="/" access="IS_AUTHENTICATED_ANONYMOUSLY"/> фильтры для урлов
<form-login login-page="/login.htm" authentication-failure-url="/login.htm?login_error=1" default-target-url='/guidepost.htm' always-use-default-target='false'/>
<concurrent-session-control max-sessions="100" expired-url="/login.htm?login_error=2" session-registry-alias="sessions"/>
<anonymous /> </http>
<authentication-provider user-service-ref='userDetailsService'> <password-encoder hash="md5"/> </authentication-provider>
<beans:bean name="userDetailsService" class="com.mypackage.UserDetailsServiceImpl"/>
</beans:beans>
|
В общем, заранее благодарен.
|