spring自定义注销过滤器在注销前执行一些操作?

时间:2013-06-05 12:31:00

标签: java spring spring-security

我正在使用Spring Security 3.0。我只需要在用户注销之前执行一些逻辑。

是否可以通过覆盖LogoutFilter类的Spring Security来实现这一目标?

1 个答案:

答案 0 :(得分:3)

有很多方法可以做到这一点。我会告诉你我要考虑的两个。

1)创建我自己的过滤器,完成我需要的东西。这里的关键点是,如果你创建了一个过滤器,你还必须告诉Spring Security将它放入“过滤器链”,你的请求过滤器链是为了做auth *的东西。 Check this documentation了解如何在更多详细信息中将过滤器插入正确的位置,但它看起来像

<http>
    <custom-filter before="LOGOUT_FILTER" ref="cleanupFilter" />
</http>

<beans:bean id="cleanupFilter" class="com.CleanupFilter"/>

请记住,通过对LogoutFilter进行子类化,您仍然可以创建自定义过滤器,因此同样适用。

2)如果我的自定义逻辑可以在用户注销之前不严格执行,但也可以稍微执行,请考虑使用SecurityContextLogoutHandler(请参阅B.1.13节中的文档),它将为您提供执行自定义的挂钩点用户成功注销时的逻辑。

<http>
    <logout success-handler-ref="myLogoutSuccessHandler"/>
</http>