1、首先定义一个过滤器类,在其中加入需要的业务逻辑
@Component
public class MyInterceptor implements HandlerInterceptor {
@Autowired
private LoginMapper loginMapper;
@Override // Controller方法执行前
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 业务
return false;
}
@Override // Controller方法执行后但视图还没有渲染
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// logger.info("执行完方法之后进执行(Controller方法调用之后),但是此时还没进行视图渲染");
}
2、然后加入一个配置类,将上面的类注入,下面有有引用,排除中前4个为swagger需要排除的
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Autowired
MyInterceptor myInterceptor;
/**
* 拦截器配置
*
* @param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
//定义排除swagger访问的路径、登录接口
String[] swaggerExcludes = new String[]{"/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/login/**"};
// 定义拦截规则
registry.addInterceptor(myInterceptor)
.addPathPatterns("/**")// 拦截全部
.excludePathPatterns(swaggerExcludes);// 排除部分
WebMvcConfigurer.super.addInterceptors(registry);
}
}