我正在使用Spring Security 3.0。我只需要在用户注销之前执行一些逻辑。
是否可以通过覆盖LogoutFilter
类的Spring Security来实现这一目标?
答案 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>