SpringBoot 如何自定义过滤器(filter)
在SpringBoot中如何自定义一个过滤器呢?以登录过滤器为例,对未登录的请求进行拦截,重定向到登录地址。
首先,你得新建一个实现了 javax.servlet.Filter 的过滤器。如下:
public class LoginFilter implements Filter { ... @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { if(没登录条件) { response.sendRedirect("你的登录地址"); return; } filterChain.doFilter(servletRequest, servletResponse); } ... }
然后你需要把这个LoginFilter 注册到Springboot的配置中。怎么弄?
1、你得新建一个类,这个类使用@Configuration进行注解;
2、使用org.springframework.boot.web.servlet.FilterRegistrationBean类把上面新建的LoginFilter注册到SpringBoot配置中,注意要加@Bean注解。
如下:
@Configuration public class FilterConfig { @Bean public FilterRegistrationBean loginFilterRegistrationBean() { FilterRegistrationBean registrationBean = new FilterRegistrationBean(); registrationBean.setFilter(new LoginFilter); //注册的是哪个过滤器 registrationBean.addUrlPatterns("/*"); // 过滤哪些请求 registrationBean.setName("LoginFilter"); // 过滤器名字 registrationBean.setOrder(1); // 设置过滤器执行循序,数字越小越早执行,最小是 -2147483648 return registrationBean; } }
OK,启动你的SpringBoot项目吧,这个登录过滤器就能生效啦,so easy!
如有问题,文明吐槽 (≖ᴗ≖)✧