判断用户session 是否过期,如果过期,让用户重新登录

本文介绍了一种在Web应用中实现会话超时处理的方法,通过在web.xml中配置过滤器,并在过滤器中检查用户会话,确保用户在长时间无操作后能被自动登出或跳转到登录页面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、在web.xml配置:

WmsFilter com.test.wms.filter.WmsFilter true WmsFilter /mgr/*/*基于请求路径过滤*/

2、对应过滤器代码:

public class WmsFilter implements Filter {
// 日志
Logger logger = LoggerFactory.getLogger(WmsFilter.class);

public void destroy() {
// TODO Auto-generated method stub
}

public void doFilter(ServletRequest sreq, ServletResponse sresp, FilterChain chain)
throws IOException, ServletException {
if (!(sreq instanceof HttpServletRequest) || !(sresp instanceof HttpServletResponse)) {
throw new ServletException(“OncePerRequestFilter just supports HTTP requests”);
}
HttpServletRequest httpRequest = (HttpServletRequest) sreq;
HttpServletResponse httpResponse = (HttpServletResponse) sresp;
httpResponse.setHeader(“Cache-Control”,“no-cache”);
httpResponse.setHeader(“Pragma”,“no-cache”);
httpResponse.setDateHeader (“Expires”, -1);
httpResponse.setHeader(“P3P”,“CP=CAO PSA OUR”);

HttpSession session = httpRequest.getSession();
if(!httpResponse.isCommitted()){
if(session != null){
Object object = session.getAttribute(“userName”);
String userName = object == null ? null : (String) object;
if (userName == null) {
boolean isAjaxRequest = isAjaxRequest(httpRequest);
if (isAjaxRequest) {
httpResponse.sendError(HttpStatus.UNAUTHORIZED.value(), “您已经太长时间没有操作,请刷新页面”);
}
httpResponse.sendRedirect("/wms/index.jsp");
}
}else{
httpResponse.sendRedirect("/wms/index.jsp");
}
}
chain.doFilter(sreq, sresp);
}

/**

  • 判断是否为Ajax请求
  • @param request
  •        HttpServletRequest
    
  • @return 是true, 否false
    */
    public static boolean isAjaxRequest(HttpServletRequest request) {
    return (request.getHeader(“X-Requested-With”) != null
    && “XMLHttpRequest”.equals(request.getHeader(“X-Requested-With”).toString()));
    }

public void init(FilterConfig config) throws ServletException {
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值