关于拦截器超时的使用
来源:互联网 发布:mfc socket编程实例 编辑:程序博客网 时间:2024/06/01 09:42
拦截器:
<!-- 拦截器集合 --> <mvc:interceptors> <!-- mvc 登陆鉴权拦截器 --> <mvc:interceptor> <!-- 需要拦截的URL --> <mvc:mapping path="/*/**" /> <bean class="com.suning.rca.common.interceptor.AuthLoginInterceptor"> <!-- 登陆页面 --> <property name="loginUrl" value="/index.html" /> <!--放行URL配置 --> <property name="excludeList"> <list> <value>/login.do</value> <value>/generateQrCode.do</value> <value>/doLogin.do</value> <value>/checkDeviceLogin.do</value> <value>/index.do</value> <value>/error.do</value> <value>/checkPosBindState.do</value> <value>/logout.do</value> </list> </property> </bean> </mvc:interceptor> <!-- session超时 --> <mvc:interceptor> <mvc:mapping path="/*/**" /> <bean class="com.suning.sdipospc.interceptor.SessionTimeoutInterceptor"> <property name="allowUrls"> <list> <!-- 如果请求中包含以下路径,则不进行拦截 --> <value>/login.do</value> <value>/generateQrCode.do</value> <value>/doLogin.do</value> <value>/checkDeviceLogin.do</value> <value>/error.do</value> <value>/checkPosBindState.do</value> <value>/logout.do</value> </list> </property> </bean> </mvc:interceptor> </mvc:interceptors>
拦截器
public class SessionTimeoutInterceptor implements HandlerInterceptor { private static final Logger LOGGER = LoggerFactory .getLogger(SessionTimeoutInterceptor.class); @Autowired private LoginService loginService; /** * 放行URL */ private List<String> allowUrls; public void setAllowUrls(List<String> allowUrls) { this.allowUrls = allowUrls; } @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { LOGGER.info("SessionTimeoutInterceptor.preHandle enter."); String requestUrl = request.getRequestURI().replace( request.getContextPath(), ""); response.setContentType("text/html; charset=utf-8"); HttpSession session = request.getSession(true); if (null != allowUrls && allowUrls.size() >= 1) for (String url : allowUrls) { if (requestUrl.contains(url)) { return true; } } Object obj = session.getAttribute(SystemConstants.SEESION_IUSER); LOGGER.info("====session对象currentUser="+obj); LOGGER.info("====sessionId="+session.getId()); if (obj == null) { String loginToken = CookiesUtil.getLoginTokenFromCookie(request); String userId = CookiesUtil.getLoginUserIdFromCookie(request); loginService.logout(loginToken, userId); loginService.operatorLog(WebposConstants.StringCon.TWO,userId); CookiesUtil.delCookie(request); CookiesUtil.delOperator(request); PrintWriter out = response.getWriter(); StringBuilder builder = new StringBuilder(); builder.append("<script type=\"text/javascript\" charset=\"UTF-8\">");// builder.append("alert(\"页面过期,请重新登录\");"); builder.append("window.top.location.href=\"" + SystemConstants.LOGIN_URL + "\""); builder.append("</script>"); out.print(builder.toString()); out.close(); } // 返回true,则这个方面调用后会接着调用postHandle(), afterCompletion() return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { LOGGER.info("SessionTimeoutInterceptor.postHandle enter."); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { LOGGER.info("SessionTimeoutInterceptor.afterCompletion enter."); }}
web.xml <session-config> <session-timeout>15</session-timeout> <cookie-config> <path>/</path> </cookie-config> </session-config>
阅读全文
0 0
- 关于拦截器超时的使用
- 关于拦截器的使用的方法
- Springmvc拦截器简单使用以及session超时跳转
- Struts2自定义拦截器实例—Session超时的处理
- Struts2自定义拦截器实例—Session超时的处理
- Struts2自定义拦截器实例—Session超时的处理
- Struts2自定义拦截器—Session超时的处理
- struts2自定义拦截器 模拟session超时的处理
- Struts2自定义拦截器—Session超时的处理
- Struts2自定义拦截器实例—Session超时的处理
- Strust中关于拦截器的一些使用
- 关于拦截器与过滤器使用场景、拦截器与过滤器的区别整理
- 关于拦截器与过滤器使用场景、拦截器与过滤器的区别以及配置整理
- 关于spring mvc拦截器拦截js文件等导致无法正常使用问题的解决
- 关于spring mvc拦截器拦截js文件等导致无法正常使用问题的解决
- 关于spring mvc拦截器拦截js文件等导致无法正常使用问题的解决
- 拦截器的使用
- 拦截器的使用
- 完美解决Android Studio 运行时出现的警告信息?
- NP完全问题习题证明
- 演示如何实现Matplotlib绘图并保存图像但不显示图形的方法
- 20170609
- Numpy基础:数组、矢量计算以及ufunc通用函数使用
- 关于拦截器超时的使用
- 20170623:七周七数据分析,Excel篇
- Idea、Android Studio的git使用方法
- Vue.js 表格查询与更新
- linux常用命令
- 转:OBS-Studio MAC平台编译 --- 史上最全
- cordova混合式开发:实现头像裁切、本地缩放、上传,适用于android和ios
- Zookeeper简单介绍
- git 把远程分支拿到本地,并建立关联关系track