我有一個基於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'? –