我正在尝试使用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()
,该会话在会话被销毁后将为空。
请给我一些建议或任何解决此情况的方法。