2016-12-05 102 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'? –

回答

相關問題