2016-12-05 127 views
0

我有一个基于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 
    } 
} 

我试着声明CustomLogoutFilterLogoutFilter作为其父豆,但没有按似乎没有工作。

是否有可能配置CustomLogoutFilter的方式,它使用的是web应用程序而不是标准的LogoutFilter?有没有推荐的方法来实现这个逻辑?

我正在使用spring-security v。3.2.5。

+0

你是否认为这将足以实现自定义['RequestMatcher'](http://docs.spring.io/spring-security/site/docs/current/apidocs/org/springframework/security/网络/ UTIL /匹配/ RequestMatcher.html)? – dur

+0

是的,这是一个可能的解决方案。是否可以配置Spring,以便LogoutFilter使用我的'customLogoutRequestMatcher'而不是在过滤器类中定义的默认'logoutRequestMatcher'? –

回答

相关问题