判断用户session 是否过期,如果过期,让用户重新登录
2017-03-29 15:59
387 查看
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 {
}
}
<!-- 判断用户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 {
}
}
相关文章推荐
- 检查session判断用户是否退出登录
- 判断用户是否登录,如果登录了放行,否则跳转到登陆页面
- JSP透过session判断用户是否登录
- flex(替代session过期)用户长时间不操作要求重新登录的处理
- 完成系统登录程序,从命令行输入用户名和密码,如果没有输入用户名和密码,则提示输入用户名和密码;如果输入了用户名但是没有输入密码,则提示用户输入密码,然后判断用户名是否是mldn,密码是否是hello,
- 在ASP.NET中怎么用SESSION判断用户是否登录?
- 完成系统登录程序,从命令行输入用户名和密码,如果没有输入用户名和密码,则提示输入用户名和密码;如果输入了用户名但是没有输入密码,则提示用户输入密码,然后判断用户名是否是mldn,密码是否是hello,
- 完成系统登录程序,从命令行输入用户名和密码,如果没有输入用户名和密码,则提示输入用户名和密码;如果输入了用户名但是没有输入密码,则提示用户输入密码,然后判断用户名是否是mldn,密码是否是hello,
- 完成系统登录程序,从命令行输入用户名和密码,如果没有输入用户名和密码,则提示输入用户名和密码;如果输入了用户名但是没有输入密码,则提示用户输入密码,然后判断用户名是否是mldn,密码是否是hello,
- 定义filter对session过期用户重新登录
- 在ASP.NET中用SESSION判断用户是否登录
- Struts2重新学习之自定义拦截器(判断用户是否是登录状态)
- 在ASP.NET中怎么用SESSION判断用户是否登录?(原创)
- 完成系统登录程序,从命令行输入用户名和密码,如果没有输入用户名和密码,则提示输入用户名和密码;如果输入了用户名但是没有输入密码,则提示用户输入密码,然后判断用户名是否是mldn,密码是否是hello,
- flex(替代session过期)用户长时间不操作要求重新登录的处理
- 登录判断 之 asp.net 使用继承类的Session,判断用户是否登录
- 在ASP.NET中怎么用SESSION判断用户是否登录
- 完成系统登录程序,从命令行输入用户名和密码,如果没有输入用户名和密码,则提示输入用户名和密码;如果输入了用户名但是没有输入密码,则提示用户输入密码,然后判断用户名是否是mldn,密码是否是hello,
- flex(替代session过期)用户长时间不操作要求重新登录的处理
- 在ASP.NET中怎么用SESSION判断用户是否登录?