springboot配置Filter的兩種方法
阿新 • • 發佈:2021-01-03
一 使用註解
@Slf4j @WebFilter(filterName = "authFilter", urlPatterns = "/*") @Order(1) //順序 public class AuthFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { log.debug("start to auth request validate...111"); HttpServletRequest req= (HttpServletRequest) request; String token = req.getHeader("token"); if (token != null) { // :TODO check token log.info("auth success"); chain.doFilter(request, response); } else { log.err("auth failed"); } } }
@Slf4j @EnableScheduling @ServletComponentScan(basePackages= {"com.sanro.filter"}) //這一句就完成了配置 @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); log.debug("rest server start success."); } }
二 手動配置
@Slf4j @Component public class AuthFilter implementsFilter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { log.debug("start to auth request validate...111"); HttpServletRequest req = (HttpServletRequest) request; String token = req.getHeader("token"); if (token != null) { // :TODO check token log.info("auth success"); chain.doFilter(request, response); } else { log.err("auth failed"); } } }
@Configuration public class FilterConfig { @Autowired private AuthFilter authFilter; @Bean public FilterRegistrationBean registerAuthFilter() { FilterRegistrationBean registration = new FilterRegistrationBean(); registration.setFilter(authFilter); registration.addUrlPatterns("/*"); registration.setName("authFilter");//手動註冊進去 registration.setOrder(1); //值越小,Filter越靠前。 return registration; } //如果有多個Filter,再寫一個public FilterRegistrationBean registerOtherFilter(){...}即可。 }