zoukankan      html  css  js  c++  java
  • SpringBoot如何添加拦截器

    在web开发的过程中,为了实现登录权限验证,我们往往需要添加一个拦截器在用户的的请求到达controller层的时候实现登录验证,那么SpringBoot如何添加拦截器呢?

    步骤如下:

    1.继承WebMvcConfigureAdapter类,覆盖其addInterceptors接口,注册我们自定义的拦截器:

    /** 
     * 
     * 注册拦截器 
     * Created by SYSTEM on 2017/8/16. 
     */  
    public class WebAppConfig extends WebMvcConfigurerAdapter {  
      
        @Override  
        public void addInterceptors(InterceptorRegistry registry) {  
            //注册自定义拦截器,添加拦截路径和排除拦截路径  
            registry.addInterceptor(new InterceptorConfig()).addPathPatterns("api/path/**").excludePathPatterns("api/path/login");  
        }  
    } 

    2.实现HandlerInterceptor接口,重写接口中的三个方法:

    public class InterceptorConfig  implements HandlerInterceptor{  
      
        private static final Logger log = LoggerFactory.getLogger(InterceptorConfig.class);  
      
        /** 
         * 进入controller层之前拦截请求 
         * @param httpServletRequest 
         * @param httpServletResponse 
         * @param o 
         * @return 
         * @throws Exception 
         */  
        @Override  
        public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {  
      
            log.info("---------------------开始进入请求地址拦截----------------------------");  
            HttpSession session = httpServletRequest.getSession();  
            if(!StringUtils.isEmpty(session.getAttribute("userName"))){  
                return true;  
            }  
            else{  
                PrintWriter printWriter = httpServletResponse.getWriter();  
                printWriter.write("{code:0,message:"session is invalid,please login again!"}");  
                return false;  
            }  
      
        }  
      
        @Override  
        public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {  
            log.info("--------------处理请求完成后视图渲染之前的处理操作---------------");  
        }  
      
        @Override  
        public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {  
            log.info("---------------视图渲染之后的操作-------------------------0");  
        }  
    }  

    这样我们就可以在用户请求到达controller层实现登录拦截了,所有用户请求都会被拦截,在prehandle方法进行登录判断,返回true则验证通过,否则失败

  • 相关阅读:
    HDU 5744
    HDU 5815
    POJ 1269
    HDU 5742
    HDU 4609
    fzu 1150 Farmer Bill's Problem
    fzu 1002 HangOver
    fzu 1001 Duplicate Pair
    fzu 1150 Farmer Bill's Problem
    fzu 1182 Argus 优先队列
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/9881265.html
Copyright © 2011-2022 走看看