SpringBoot添加拦截器

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

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

  1. /** 
  2.  * 
  3.  * 注册拦截器 
  4.  * Created by SYSTEM on 2017/8/16. 
  5.  */  
  6. @Configuration
  7. public class WebAppConfig extends WebMvcConfigurerAdapter {  
  8.   
  9.     @Override  
  10.     public void addInterceptors(InterceptorRegistry registry) {  
  11.         //注册自定义拦截器,添加拦截路径和排除拦截路径  
  12.         registry.addInterceptor(new InterceptorConfig()).addPathPatterns("api/path/**").excludePathPatterns("api/path/login");  
  13.     }  

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

  1. public class InterceptorConfig  implements HandlerInterceptor{  
  2.   
  3.     private static final Logger log = LoggerFactory.getLogger(InterceptorConfig.class);  
  4.   
  5.     /** 
  6.      * 进入controller层之前拦截请求 
  7.      * @param httpServletRequest 
  8.      * @param httpServletResponse 
  9.      * @param o 
  10.      * @return 
  11.      * @throws Exception 
  12.      */  
  13.     @Override  
  14.     public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {  
  15.   
  16.         log.info("---------------------开始进入请求地址拦截----------------------------");  
  17.         HttpSession session = httpServletRequest.getSession();  
  18.         if(!StringUtils.isEmpty(session.getAttribute("userName"))){  
  19.             return true;  
  20.         }  
  21.         else{  
  22.             PrintWriter printWriter = httpServletResponse.getWriter();  
  23.             printWriter.write("{code:0,message:\"session is invalid,please login again!\"}");  
  24.             return false;  
  25.         }  
  26.   
  27.     }  
  28.   
  29.     @Override  
  30.     public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {  
  31.         log.info("--------------处理请求完成后视图渲染之前的处理操作---------------");  
  32.     }  
  33.   
  34.     @Override  
  35.     public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {  
  36.         log.info("---------------视图渲染之后的操作-------------------------0");  
  37.     }  
  38. }  

这样我们就可以在用户请求到达controller层实现登录拦截了,所有用户请求都会被拦截,在prehandle方法进行登录判断,返回true则验证通过,否则失败
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值