Spring 当会话过期时 MVC 重定向到带有自定义参数的页面

Spring MVC redirect to page with custom parameter when session expired

我找不到 Spring 在会话超时时重定向到带有参数的页面的任何解决方案。我需要重定向到错误登录页面,如 "Session expired"。我试过过滤器和方法 session.isNew()。但它不起作用,因为当请求到达登录页面时它总是已经有会话。另外 HttpSessionEvent 处理程序不起作用,因为不允许访问请求属性和重定向到页面。

最简单的方法是创建一个拦截器,在 session 到期后的每个响应中添加刷新 header。

public class RefreshInterceptor extends HandlerInterceptorAdapter {

    @Override
    public void postHandle (
        HttpServletRequest request, 
        HttpServletResponse response, 
        Object handler, 
        ModelAndView modelAndView
    ) throws Exception {

      //if session != null and user is authenticated then...
      response.setIntHeader("Refresh", figureOutWhenSessionExpires() + A_SMALL_DELAY );

      super.postHandle(request, response, handler, modelAndView);

    }
}