创建拦截器类实现于接口HandlerInterceptor,实现三个相关方法
preHandle 目标方法执行前
postHandle 目标方法执行后
afterCompletion 目标网页渲染完成后
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//获取请求路径
String requestURI = request.getRequestURI();
log.info("拦截的请求路径是{}",requestURI);
//登录检查逻辑
HttpSession session = request.getSession();
Object loginUser = session.getAttribute("loginUser");
if (loginUser != null){
return true;
}else {
request.setAttribute("msg","请登录");
request.getRequestDispatcher("/").forward(request,response);
return false;
}
}
拦截器添注册到容器
addPathPatterns+拦截路径
excludePathPatterns+放行路径
@Configuration
public class AdminWebConfing implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginINterfcerter())
.addPathPatterns("/**")//拦截所有请求,包括静态请求
.excludePathPatterns("/","/login","/css/**","/fonts/**","/images/**","/js/**");//放行的请求
}
}