ControllerInterceptor

/*权限拦截
判断当前用户是否有权限访问该页面
说明:发起请求,进入拦截器连,运行所有拦截器的preHandle方法,
1、当preHandle返回false,从当前拦截器往回执行所有拦截器的afterCompletion方法,再退出拦截器连
2、当preHandle返回true,执行下一个拦截器,直到所有的拦截器执行完。再运行被拦截的Controller。
然后进入拦截器连,运行所有拦截器的postHandle方法,完后从最后一个拦截器往回执行所有拦截器的afterCompletion方法,
当有拦截器抛出异常,会从当前拦截器往回执行所有拦截器的afterCompletion方法*/
public class ControllerInterceptor extends HandlerInterceptorAdapter {
     private static final Logger log=Logger.getLogger(ControllerInterceptor.class);
     private List<String> excludedUrls;
     @Overrider
     public void afterCompletion(HttpServletRequest request,
                          HttpServletResponse response,Object handler,Exception ex) throws Exception{
              Log.debug("-->afterCompletion");
              super.afterCompletion(request,response,handler,ex);
     }

@Overrider
     public void postHandle(HttpServletRequest request,
                        HttpServletResponse response,Object handler,ModelAndView mav) throws Exception{
             Log.debug("-->postHandle");
             super.postHandle(request,response,handler,mav);
      }

@Overrider
      public boolean preHandle(HttpServletRequest request,
                        HttpServletResponse response,Object handler) throws Exception{
              Log.debug("-->preHandle");
               //当前访问的链接
              String currentUrl=request.getServletPath();
              String currentRequestURI=request.getRequestURI();
               Log.info("currentUrl-->"+currentRequestURI);
               String requestUri=request.getRequestURI();
                if(requestUri.equals("/etruck-webapp/web/auth/login"||
                                                  requestUri.contains("/etruck-webapp/web/css"||
                                                  requestUri.contains("/etruck-webapp/web/js")){
                            return super.preHandle(request,response,handler);
                 }else{
                             return super.preHandle(request,response,handler);
                  }
       }
       public List<String> getExcludeUrl(){
                     return excludedUrls;
        }
        public void setExcludeUrl(List<String> excludedUrls){
                    this.excludedUrls=excludedUrls;
          }
          public List<String> getExcludeUrls(){
                    return excludedUrls;
           }
           public void setExcludeUrls(List<String> excludedUrls){
                     this.excludedUrls=excludedUrls;
           }
}

时间: 2024-10-14 08:00:07

ControllerInterceptor的相关文章

SpringBoot切面控制业务逻辑

业务逻辑:写一个公共拦截类,过滤传进Controller的参数 为了调用接口安全起见,每个需要调用的接口有一个参数accessToken,用于安全验证 注:先进入过滤器Filter,再进入aop,最后进入Controller,我们做的事在aop过滤Controller参数 package com.xgt.config; import com.xgt.common.BaseController; import com.xgt.common.PcsResult; import com.xgt.uti

SpringCloud请求响应数据转换(一)

异常现象 近期做Spring Cloud项目,工程中对Controller添加ResponseBodyAdvice切面,在切片中将返回的结果封装到ResultMessage(自定义结构),但在Controller的方法返回值为字符串,客户端支持的类型为application/json时,出现以下异常: java.lang.ClassCastException: com.service.view.ResultMessage cannot be cast to java.lang.String 即无