回顾:
logoutFilter过滤器,我已经带大家了解过了。其中注销是由handler.logout完成的。这就需要在配置文件中配置具体的handler,比如securitycontextlogouthandler,或者tokenbasedremembermeservices,大家可以看到logouthandler具体的实现类如下:
若我程序中就想只用SecurityContextLogoutHandler,对于利用cookie自动登录的效果暂时不需要,我们应该如何做呢?
第一:利用上篇博客的做法,在list中只配置SecurityContextLogoutHandler
第二:重写这个logoutFilter,程序中使用自己的过滤器。
因为上篇博客已经讲解了关键代码,其实那几句关键代码几乎就是整个类代码了。这篇博客同上篇博客的作用一样,实现注销功能,只不过是利用自己Filter而已。
具体开发步骤:
开发环境:
配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="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.0.xsd">
<!-- 通过过滤连形式,acegi提供很多filter,其中过滤器执行也有一定的顺序 ,同事支持正则和ant匹配-->
<bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy">
<property name="filterInvocationDefinitionSource">
<value>
PATTERN_TYPE_APACHE_ANT
/**=httpSessionContextIntegrationFilter,logoutFilter,authenticationProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor
</value>
</property>
</bean>
<bean id="httpSessionContextIntegrationFilter"
class="org.acegisecurity.context.HttpSessionContextIntegrationFilter" />
<!--自己改写的注销功能-->
<bean id="logoutFilter" class="com.extend.MyLogoutFilter">
<property name="logoutSuccessUrl" value="/login.jsp"/>
</bean>
<!-- 表单认证处理filter -->
<bean id="authenticationProcessingFilter" class