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

在Spring Boot中,拦截器(Interceptor)是一种用于在请求处理过程中进行预处理和后处理的机制。Spring Boot的拦截器与Servlet规范中的过滤器(Filter)类似,但提供更丰富的功能和更便捷的使用方式。

要在Spring Boot中使用拦截器,您可以按照以下步骤进行操作:

1.创建一个实现了HandlerInterceptor接口的拦截器类,该接口定义了在请求处理前、请求处理后以及请求完成后的方法。

public class MyInterceptor implements HandlerInterceptor {
    // 在请求处理前执行,返回值表示是否中断请求
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 进行预处理,例如登录验证、权限检查等
        return true; // 返回true表示继续执行请求,返回false表示中断请求
    }

    // 在请求处理后执行,但在视图被渲染之前(Controller方法调用之后)
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        // 进行后处理,例如添加日志、修改响应等
    }

    // 在整个请求完成后执行,视图渲染完成后
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        // 进行资源清理工作
    }
}

2.在Spring Boot中,您可以通过实现WebMvcConfigurer接口或使用@WebFilter、@WebListener等注解的方式配置拦截器。

2.1(推荐)实现WebMvcConfigurer接口的方式,然后实现WebMvcConfigureraddInterceptors()
@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 添加自定义拦截器
        registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**");
    }
}
@Configuration
public class AdminWebConfig implements WebMvcConfigurer{
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginInterceptor())//拦截器注册到容器中
                .addPathPatterns("/**")  //所有请求都被拦截包括静态资源
                .excludePathPatterns("/","/login","/css/**","/fonts/**","/images/**",
                        "/js/**","/aa/**"); //放行的请求
}
2.2 使用注解的方式: 

在拦截器类上使用@Component注解,并添加 @WebFilter、@WebListener等注解进行配置。

3 配置完成后:

拦截器将按照其定义的顺序拦截请求,您可以在preHandle方法中进行预处理,例如登录验证、权限检查等;在postHandle方法中进行后处理,例如添加日志、修改响应等;在afterCompletion方法中进行资源清理工作。

猜你喜欢

转载自blog.csdn.net/weixin_55772633/article/details/131909840