1.创建类实现HandlerInterceptor接口
@Component public class AdminLoginInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception { System.out.println("进入拦截器..."); String uri = request.getRequestURI(); if (uri.startsWith("/admin") && null == request.getSession().getAttribute("loginUser")) { request.getSession().setAttribute("errorMsg", "请登录"); response.sendRedirect(request.getContextPath() + "/admin/login"); System.out.println("未登录,拦截成功..."); return false; } else { request.getSession().removeAttribute("errorMsg"); System.out.println("已登录,放行..."); return true; } } @Override public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { }
preHandle:在业务处理器处理请求之前被调用。预处理,可以进行编码、安全控制、权限校验等处理。postHandle:在业务处理器处理请求执行完成后,生成视图之前执行。afterCompletion:在DispatcherServlet完全处理完请求后被调用,可用于清理资源等,返回处理(已经渲染了页面)。
2. 新建配置类,该类需要实WebMvcConfigurer接口
@Configuration public class NeeBeeMallWebMvcConfigurer implements WebMvcConfigurer { @Autowired private AdminLoginInterceptor adminLoginInterceptor; public void addInterceptors(InterceptorRegistry registry) { // 添加一个拦截器,拦截以/admin为前缀的URL路径(后台登录拦截) registry.addInterceptor(adminLoginInterceptor) .addPathPatterns("/admin/**") .excludePathPatterns("/admin/login") .excludePathPatterns("/admin/dist/**") .excludePathPatterns("/admin/plugins/**"); } }
addPathPatterns()方法和excludePathPatterns()两个方法,它们分别是添加路径拦截规则和排除路径拦截规则
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)