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

1、在web.xml配置:

<!-- 判断用户session 是否过期,如果过期,让用户重新登录 -->
<filter>
<filter-name>WmsFilter</filter-name>
<filter-class>com.test.wms.filter.WmsFilter</filter-class>
<async-supported>true</async-supported>
</filter>
<filter-mapping>
<filter-name>WmsFilter</filter-name>
<url-pattern>/mgr/*</url-pattern>/*基于请求路径过滤*/
</filter-mapping>

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 {
}
}

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值