1.编写拦截器
implements HandlerInterceptor
public class AuthorityInterceptor implements HandlerInterceptor {
/*
进入Controller层之前调用;
返回值为true,调用Controller层的方法;
返回值为false,不再进入Controller层,重写response,返回到页面。
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
log.info("preHandle");
return true;
}
//Controller层处理完成之后调用,与preHandle方法相对应
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
log.info("postHandle");
}
/*
所有请求处理完成之后调用。
例如:前后端不分离的项目,当ModelAndView返回到前端页面并展示出来之后,才调用此方法
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
log.info("afterCompletion");
}
}
2,注册
@Configuration
implements WebMvcConfigurer
.addPathPatterns("/manage/**")
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new AuthorityInterceptor()).addPathPatterns("/manage/**");
}
}