java-在使用Spring Security注销用户之前调用一些逻辑?
作者:互联网
这个问题已经在这里有了答案: > spring custom logout filter to perform some action before logs out? 1个
我正在使用spring-security3.x.我有一个要求,在用户注销之前,我要执行一些逻辑.我写了一个过滤器来扩展spring提供的LogoutFilter,如下所示.
public class MyFilter extends LogoutFilter{
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
//Perform some logic
super.doFilter(req,res,chain);
}
}
当用户单击注销按钮时,如何调用自己的过滤器?
解决方法:
您不需要自定义的LogoutFilter,需要将以下其中一项插入标准过滤器中:
>任意数量的自定义LogoutHandlers(javadoc here)
>自定义LogoutSuccessHandler(javadoc here)
请注意,在LogoutSuccessHandler之前调用LogoutHandlers,但是允许后者引发异常,而不应允许前者.
还要注意,如果您使用自定义LogoutHandler,则需要将它们提供给/注入LogoutFilter和ConcurrentSessionFilter(如果使用)中.
如果您在XML配置中使用安全名称空间(即xmlns =“ http://www.springframework.org/schema/security”),则可以通过以下方式轻松添加自定义LogoutSuccessHandler
<http>
...
<logout success-handler-ref="yourBeanId"/>
</http>
不确定如何使用名称空间插入自定义LogoutHandlers.
否则,它将看起来像这样:
<bean id="logoutFilter" class="org.springframework.security.web.authentication.logout.LogoutFilter">
<constructor-arg ref="logoutSuccessHandler"/>
<constructor-arg ref="logoutHandlers"/>
...
</bean>
<bean id="logoutSuccessHandler" class="your.custom.LogoutSuccessHandler"/>
<bean id="logoutHandlers" class="java.util.Arrays" factory-method="asList">
<constructor-arg>
<array>
<bean class="your.custom.LogoutHandler"/>
...
</array>
</constructor-arg>
</bean>
标签:spring-security,spring,java 来源: https://codeday.me/bug/20191123/2065786.html