filterregistrationbean设置白名单
时间: 2023-07-04 15:30:49 浏览: 378
spring boot过滤器FilterRegistrationBean实现方式
FilterRegistrationBean 可以用来注册 Filter,并且可以设置 Filter 的 url-pattern,即需要过滤的请求路径。如果想要设置白名单,可以先设置一个 Filter,用于拦截所有请求,然后再在该 Filter 中判断请求路径是否在白名单中。
具体实现可以参考以下示例代码:
```java
@Configuration
public class FilterConfig {
@Bean
public FilterRegistrationBean<Filter> myFilter() {
FilterRegistrationBean<Filter> registration = new FilterRegistrationBean<>();
registration.setFilter(new MyFilter());
registration.addUrlPatterns("/*"); // 拦截所有请求
registration.setName("myFilter");
registration.setOrder(Ordered.LOWEST_PRECEDENCE); // 设置优先级最低,确保在其他 Filter 之后执行
return registration;
}
private static class MyFilter implements Filter {
// 设置白名单
private List<String> whiteList = Arrays.asList("/login", "/register");
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
String path = req.getRequestURI().substring(req.getContextPath().length()).replaceAll("[/]+$", "");
if (whiteList.contains(path)) {
chain.doFilter(request, response); // 在白名单中,直接放行
} else {
// 不在白名单中,进行其他操作(比如校验登录状态等)
}
}
// 其他方法略
}
}
```
这样,所有请求都会被 MyFilter 拦截,然后根据请求路径是否在白名单中进行放行或其他操作。
阅读全文