SpringBoot 2.3 + 自定义拦截器

2020-10-28  本文已影响0人  vincent_wujia

1、创建自定义拦截器实现 HandlerInterceptor(拦截器处理器)

/**
 * 创建自定义拦截器
 * @author xiao_wu
 * @date 2020/10/20 13:11
 */
@Slf4j
public class MyInterceptor implements HandlerInterceptor {

    /**
     * 通过实现 HandlerInterceptor中的预先处理,方法进行请求验证操作
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException {
        log.info("自定义拦截器");
        log.info("这里可以编写不同的业务请求拦截");
        String user = request.getHeader("user");
        if(''.equals(user) || user == null){
            log.info("验签失败---user不存在");
            return false;
        }
        return true;
    }
    /**
     * postHandle(后期处理)
     * 该方法在preHandle返回为true,执行完Controller层的方法后执行
     * 可以修改ModelAndView
     * ps:返回的为json数据时不能修改(@RestController)此类注解修饰不能修改
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView){

    }

    /**
     * afterCompletion(完成后处理)
     * 当请求完成后执行,一般用户数据缓存清楚
     */
    @Override
    public void afterCompletion(HttpServletRequest request,HttpServletResponse response, Object handler, Exception e){

    }
}

2、实现WebMvnConfigurer中的addInterceptors方法进行自定义拦截器的注册

/**
 * 设置自定义拦截器
 * @author xiao_wu
 * @date 2020/10/20 13:31
 */
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    /**
     * 实现 WebMvcConfigurer 中的添加拦截器方法
     * @param registry 拦截器注册表
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry){
        //使用拦截器注册表进行添加 自定义拦截器
        registry.addInterceptor(new MyInterceptor())
                //添加拦截路径
                .addPathPatterns("/inter/**")
                //设置放行路径
                .excludePathPatterns("/outer/**");
    }
}
上一篇下一篇

猜你喜欢

热点阅读