springboot filter 正确用法
时间: 2024-09-25 13:09:27 浏览: 32
Spring Boot Filter是一个用于拦截HTTP请求的处理链,它可以在请求进入业务处理器之前或之后添加自定义的行为。Filter通常用于处理如统一的请求日志、跨站请求伪造(CSRF)防护、权限验证等常见的场景。以下是Spring Boot中正确使用Filter的一般步骤:
1. 配置过滤器:在`WebMvcConfigurer`接口或配置类中添加`addFilter()`方法,指定Filter的顺序和实现类。
```java
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addFilters(FilterRegistrationBean[] filters) {
// 添加全局filter
filters.add(new FilterRegistrationBean<>(new MyGlobalFilter())
.addUrlPatterns("/*")
.order(0));
// 或者添加特定路径的filter
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new MyPathSpecificFilter());
registration.addUrlPatterns("/api/**");
registration.order(1);
filters.add(registration);
}
}
```
2. 创建Filter实现类:覆写`doFilter()`方法,这里可以访问到HttpServletRequest、HttpServletResponse和FilterChain对象。
```java
@Component
public class MyFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
// 这里进行自定义操作...
chain.doFilter(request, response);
}
// 其他可能需要的方法,如 init() 和 destroy()
}
```
阅读全文