SpringBoot + 自定义拦截器
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/**");
}
}