首页 > 解决方案 > 无法识别会话到期并重定向到会话到期页面

问题描述

我正在尝试使用 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()which 也不会出现,因为 session 为空。

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

上述情况将false同时出现在登录请求和会话超时请求的情况下。

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

请给我一些建议或任何方法来处理这种情况。

标签: spring-boottomcatservlet-filtershttpsession

解决方案


推荐阅读