У меня есть веб-приложение с пружинным основанием, где мне нужно, чтобы пользователь автоматически выходил из системы, когда выполнялись определенные условия. Я хотел бы иметь такой же эффект, как если бы пользователь перешел к logout-url
, настроенному в <security:logout logout-url="url" success-handler-ref="handler" />
.Каков рекомендуемый способ настройки 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
таким образом, чтобы он использовался веб-приложением вместо стандартного LogoutFilter
? Есть ли рекомендуемый способ реализации этой логики?
Я использую весеннюю защиту против 3.2.5.
Считаете ли вы, что этого достаточно, чтобы реализовать пользовательский ['RequestMatcher'] (http://docs.spring.io/spring-security/site/docs/current/apidocs/org/springframework/security/ Web/Util/согласовань/RequestMatcher.html)? – dur
Да, это возможное решение. Можно ли настроить Spring так, чтобы 'LogoutFilter' использовал мой' customLogoutRequestMatcher' вместо стандартного 'logoutRequestMatcher', который определен в классе фильтра? –