每一个系统的拦截器设计存在着大同小异每个拦截器都是根据自己系统的需求来设计的根据我的系统设计出对应的拦截器,其中出现了五种用户其中包括管理员因此拦截他们未登录是与其他设计不同的
下面展示的代码是基于springmvc的登陆拦截器代码
//根据系统设计加入不拦截的URI private static final String [] IGNORE_URI = {"index","/admin/tologin","/admin/login"}; @Override public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception { // TODO Auto-generated method stub } @Override public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception { // TODO Auto-generated method stub } @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception { Object user = request.getSession().getAttribute("user"); boolean falg = false; String servletPath = request.getServletPath(); for (String s : IGNORE_URI) { if(servletPath.contains(s)){ falg = true; break; } } if(falg){ return true; }else { if(user == null){ //request.getContextPath()得到调用该方法的项目名称 response.sendRedirect(request.getContextPath()+"/index/tologin"); System.out.println("未登录"+request.getContextPath()); return false; } return true; } }
同时在springmvc配置文件中配置
<!-- 拦截器 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <bean class="com.crabverfication.utils.LoginInterceptor"> </bean> </mvc:interceptor> </mvc:interceptors>这样除了指定的不拦截的路径 其他的所有路径都会被拦截