1. 程式人生 > 實用技巧 >springboot配置Filter的兩種方法

springboot配置Filter的兩種方法

一 使用註解

@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 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"); } } }
@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(){...}即可。
}