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/**");
}
}