У меня есть фильтр, который, если сессия истекла, и метод POST, затем добавляет параметр URL-адреса перенаправления к URL-адресу и заставляет браузер не кэшировать страницу, чтобы избежать исключения viewExpiredException, но неработать, я все еще получаю это исключение.
Вот мой код:
if ( "POST".equalsIgnoreCase(request.getMethod()) ) {
log.info("POST --> Evitar ViewExpiredException de JSF");
log.info("Hacer que el navegador no cachee la página");
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0); // Proxies.
log.info("Redirigir a la página con el parámetro 'faces-redirect'");
String pagRedirect = anadirFacesRedirect(pagSolicitada);
log.info("Página con 'faces-redirect' = "+pagRedirect);
log.info("URI con 'faces-redirect' = "+request.getContextPath()+pagRedirect);
response.sendRedirect(request.getContextPath()+pagRedirect);
chain.doFilter(request, response);
return;
}
Метод "anadirFacesRedirect" добавляет "Face-Redirect = True".Это работает нормально, я отлаживал и видел журналы и параметр sendRedirect в порядке.
Я поместил этот код в фильтр Spring Security.
Я не знаю, является ли этопроблема (из-за Spring Security), или в коде что-то не так?
Спасибо.
ОБНОВЛЕНИЕ: Я уже проверил, что это не такпроблема Spring Security, потому что я поместил ее в веб-фильтр, который выполняется после цепочки фильтров Spring Security, но он все еще не работает, он вызывает исключение viewExpiredException.
Почему это так?Я принудительно перенаправил и заставил браузер не использовать страницу кеша.