我正在使用 Spring Security 3.0。我只需要在用户注销之前执行一些逻辑。
是否可以通过重写 Spring Security 的 LogoutFilter
类来实现这一点?
最佳答案
有很多方法可以做到这一点。我会告诉你我会考虑的两个。
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 节中的文档)这将为您提供一个钩子(Hook)点,以便在用户成功注销时执行自定义逻辑。
<http>
<logout success-handler-ref="myLogoutSuccessHandler"/>
</http>
关于java - spring 自定义注销过滤器在注销之前执行某些操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16940017/