Недавно нам пришлось реализовать функцию выхода из системы с помощью Spring-security 3.0.5. Хотя на этот вопрос уже дан ответ выше, я выложу полный код, который определенно поможет начинающему пользователю, как я:)
Конфигурация в Spring-security.xml
<http auto-config="false" lowercase-comparisons="false" use-expressions="true">
<custom-filter position="LOGOUT_FILTER" ref="logoutFilter" />
</http>
<beans:bean id="logoutFilter" class="org.springframework.security.web.authentication.logout.LogoutFilter">
<beans:constructor-arg name="logoutSuccessHandler" ref="xxxLogoutSuccessHandler" />
<beans:constructor-arg name="handlers">
<beans:list>
<beans:ref bean="securityContextLogoutHandler"/>
<beans:ref bean="xxxLogoutHandler"/>
</beans:list>
</beans:constructor-arg>
<beans:property name="filterProcessesUrl" value="/logout"/>
</beans:bean>
<beans:bean id="XXXLogoutSuccessHandler" class="com.tms.dis.sso.XXXLogoutSuccessHandler"/>
<beans:bean id="securityContextLogoutHandler" class="org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler">
<beans:property name="invalidateHttpSession" value="true"/>
</beans:bean>
<beans:bean id="XXXLogoutHandler" class="com.tms.dis.sso.XXXLogoutHandler"/>
Здесь я создал два пользовательских класса
- XXXLogoutHandler, который будет реализовывать org.springframework.security.web.authentication.logout.LogoutHandler и переопределит метод logout ().
- XXXLogoutSuccessHandler, который будет реализовывать org.springframework.security.web.authentication.logout.LogoutSuccessHanlder и переопределит метод onLoguoutSuccess (). В методе XXXLogoutSuccessHandler.onLogoutSuccess () вызовите метод redirectStrategy.sendRedirect (), который завершает работу пользователя с определенным targetURL.
- org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler выполняет задачу аннулирования сеанса пользователя.
Надеюсь, это поможет и даст правильное направление стартеру
Примечание : Намеренно не размещен код для пользовательской реализации.