无法识别会话过期,无法重定向到会话过期页面

时间:2018-07-29 14:52:45

标签: spring-boot tomcat servlet-filters httpsession

我正在尝试使用Spring Boot在一个Web应用程序上工作。
我一直在尝试为请求过滤器中的Http会话处理找到一些解决方案。
我试图找出超出请求的会话时间,然后重定向到会话过期页面。 我为会话超时设置了以下属性

server:
session:
    timeout: 180
cookie:
    max-age: 180 

我想解释一下到目前为止我尝试过的方法。 我写了一个过滤器,它是如下所述的请求过滤器

public class MonitoringFilter extends GenericFilterBean{
 @Override
 public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {

    if(!request.isRequestedSessionIdValid()){
       //Session has expired
    }
    chain.doFilter(request, response);
}

我必须以某种方式组合一个条件,以区分用户的第一个请求(当用户从​​浏览器登录时)和会话超时后来自浏览器的请求。

在两种情况下,request.isRequestedSessionIdValid()都是错误的,我也尝试过使用session.isNew(),因为会话为null,因此它也不会出现。

if(!request.isRequestedSessionIdValid()){
      //Session has expired
}

在登录请求和会话超时请求的情况下,以上条件均为false

我还尝试过request.getRequestedSessionId(),该会话在会话被销毁后将为空。

请给我一些建议或任何解决此情况的方法。

0 个答案:

没有答案