LoginInterceptor.java

@Slf4j
public class LoginInterceptor implements HandlerInterceptor {

    /**
     * 目标方法执行前执行
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 查看访问的 URL
        String requestURI = request.getRequestURI();
        log.info("preHandle拦截到的请求的URI: " + requestURI);

        // 进行登录验证
        Object admin = request.getSession().getAttribute("admin");
        if (admin == null) {
            // 拦截
            request.setAttribute("msg", "请先登录!");
            request.getRequestDispatcher("/").forward(request, response);
            return false;
        }
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        log.info("postHandle执行了");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        log.info("afterCompletion执行了");
    }
}

WebConfig.java

@Configuration
public class WebConfig implements WebMvcConfigurer {

    /**
     * 方式一:直接在配置类中注册拦截器
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginInterceptor())
                .addPathPatterns("/**") // 拦截所有请求
                .excludePathPatterns("/", "/login", "/images/**", "/upload.html", "/upload"); // 指定要放行的请求,后面可以根据业务进行调整
    }

    /**
     * 方式二:通过@Bean注册拦截器
     */
    /*
    @Bean
    public WebMvcConfigurer webMvcConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            public void addInterceptors(InterceptorRegistry registry) {
                registry.addInterceptor(new LoginInterceptor())
                        .addPathPatterns("/**") // 拦截所有请求
                        .excludePathPatterns("/", "/login", "/images/**"); // 指定要放行的请求,后面可以根据业务进行调整
            }
        };
    }
    */
}
分类: 标签: SpringBoot 拦截器 Interceptor

评论

全部评论