拦截器-登录检查与静态资源放行
HandlerInterceptor

1.编写拦截器拦截逻辑---实现HandlerInterceptor 接口
public class LoginIntercepter implements HandlerInterceptor {
// 登录检查逻辑
private boolean isLogin(HttpServletRequest request,HttpServletResponse response) throws Exception {
// 登录检查逻辑
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;
}
}
//目标方法执行完成前
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
String requestURI = request.getRequestURI();
log.info("攔截的請求路徑是{}",requestURI);
return isLogin(request.getSession(),response);
}
//目标方法执行完成后
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
@Nullable ModelAndView modelAndView) throws Exception {
}
// 页面渲染后
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
@Nullable Exception ex) throws Exception {
}
2.将拦截器注册到容器中 --- 实现WebMvcConfigurer 的 addInterceptors方法
@Configuration
public class WebAdminConfig implements WebMvcConfigurer {
// 添加拦截器方法
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginIntercepter()) // 添加自定义拦截器
.addPathPatterns("/**") // 拦截所有路径,包括靜態資源
.excludePathPatterns("/","/login","/css/**"); // 放行路径
}
}
放行静态资源
- 方法1:在配置类的添加拦截器方法中添加放行路径
registry.excludePathPatterns("/靜態資源路径/**");
- 方法2:
1.在配置文件中添加静态资源匹配路径
![]()
2.在所有页面的静态资源路径中使用相对的静态资源路径


浙公网安备 33010602011771号