登录检查与静态资源放行
编写一个拦截器,实现 HandlerInterceptor 接口
public class LoginInterceptor implements HandlerInterceptor {/*** 目标方法执行之前** @param request* @param response* @param handler* @return* @throws Exception*/@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {String requestURI = request.getRequestURI();log.info("拦截的请求路径是{}", requestURI);// 登录检查逻辑HttpSession session = request.getSession();if (session.getAttribute("loginUser") != null) {return true;}log.info("有请求被拦截了");//跳转到登录页session.setAttribute("msg", "请先登录");response.sendRedirect("/");return false;}
拦截器注册到容器中,并指定拦截规则
实现 WebMvcConfigurer 的 addInterceptors 方法
@Configurationpublic class AdminWebConfig implements WebMvcConfigurer {/*** 拦截器** @param registry*/@Overridepublic void addInterceptors(InterceptorRegistry registry) {// /** 拦截所有的请求registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**").excludePathPatterns("/","/login","/css/**","/js/**","/fonts/**","/images/**");}}
放行静态资源的2种方案
1、挨个儿放行 /css、/js、/fonts、/images 等静态资源请求前缀
好处是不需要改动模板文件,只需要在配置拦截器时多添加几条规则即可。
2、配置静态资源访问路径前缀,然后放行前缀
spring:mvc:static-path-pattern: /static/**
