2

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

是否可以通过覆盖LogoutFilterSpring Security 类来实现?

4

1 回答 1

3

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

1)创建我自己的过滤器来做我需要的事情。这里的关键点是,如果你创建了一个过滤器,你还必须告诉 Spring Security 把它放到“过滤器链”中,你的请求通过过滤器链来做 auth* 的事情。查看此文档以了解如何更详细地将过滤器插入正确的位置,但它看起来像

<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>
于 2013-06-05T13:06:27.960 回答