На самом деле помеченный «правильный ответ» касается установки пользовательского logout success-handler
, но не LogoutFilter
, как определяющего в вопросе.
Итак, если кто-то хочет создать пользовательский фильтр выхода из системы, здесьфрагмент:
<bean id="securityContextLogoutHandler" class="org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler"/>
<bean id="logoutFilter" class="org.springframework.security.web.authentication.logout.LogoutFilter">
<property name="filterProcessesUrl" value="/logout"/>
<constructor-arg index="0" value="/"/>
<constructor-arg index="1">
<list>
<ref bean="securityContextLogoutHandler"/>
<!--ref bean="myLogoutHandler"/-->
</list>
</constructor-arg>
</bean>
Это класс фильтра по умолчанию с одним предопределенным обработчиком по умолчанию (этот недействительный сеанс).Если вам действительно нужен собственный фильтр выхода из системы, вам следует изменить это стандартное поведение (создать подкласс или написать свой собственный с тем же интерфейсом).Также не забудьте зарегистрировать его:
<security:http>
....
<custom-filter position="LOGOUT_FILTER" ref="logoutFilter"/>
</security:http>
ОБНОВЛЕНИЕ : После прочтения некоторого пружинного кода я обнаружил, что есть еще один обработчик выхода по умолчанию - RememberMeServices
, определенный с помощью интерфейса AbstractRememberMeServices implements LogoutHandler
.Поэтому, если вы используете RememberMeServices
и хотите написать собственный фильтр, включающий поддержку RememberMe, вам также необходимо добавить ссылку на ваш RememberMeServices
в список обработчиков выхода из системы.