我有一个基于spring的web应用程序,我需要用户在满足特定条件时自动注销。我想要达到的效果与用户导航到在<security:logout logout-url="url" success-handler-ref="handler" />
中配置的logout-url
相同。什么是在Spring中自定义LogoutFilter的推荐方式?
据我所知,这发生在LogoutFilter
,其中所有LogoutHandlers
被称为为此过滤器定义。
我的想法是创建LogoutFilter
一个子类,这样我可以在requiresLogout(HttpServletRequest request, HttpServletResponse response)
方法实现自己的逻辑:
public class CustomLogoutFilter extends LogoutFilter {
public CustomLogoutFilter(LogoutSuccessHandler logoutSuccessHandler, LogoutHandler... handlers) {
super(logoutSuccessHandler, handlers);
}
public CustomLogoutFilter(String logoutSuccessUrl, LogoutHandler... handlers) {
super(logoutSuccessUrl, handlers);
}
@Override
protected boolean requiresLogout(HttpServletRequest request, HttpServletResponse response) {
boolean result = super.requiresLogout(request, response);
result &= isCustomCondition();
return result;
}
private boolean isCustomCondition(){
// evaluate custom condition and return the value
}
}
我试着声明CustomLogoutFilter
与LogoutFilter
作为其父豆,但没有按似乎没有工作。
是否有可能配置CustomLogoutFilter
的方式,它使用的是web应用程序而不是标准的LogoutFilter
?有没有推荐的方法来实现这个逻辑?
我正在使用spring-security v。3.2.5。
你是否认为这将足以实现自定义['RequestMatcher'](http://docs.spring.io/spring-security/site/docs/current/apidocs/org/springframework/security/网络/ UTIL /匹配/ RequestMatcher.html)? – dur
是的,这是一个可能的解决方案。是否可以配置Spring,以便LogoutFilter使用我的'customLogoutRequestMatcher'而不是在过滤器类中定义的默认'logoutRequestMatcher'? –