zoukankan      html  css  js  c++  java
  • springboot配置Filter的两种方法

    https://www.cnblogs.com/yoyotl/p/10853499.html

    一、使用注解
    1. 假设Filter类的路径为com.sanro.filter

    复制代码
    @Slf4j
    @WebFilter(filterName = "authFilter", urlPatterns = "/*")
    @Order(1) //测试好像这个参数不生效,实际生效的是Filter扫描到的顺序(所以起名很重要)
    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");
            }
        }
    }
    复制代码

    2. 自动扫描配置如下

    复制代码
    @Slf4j
    @EnableScheduling
    @ServletComponentScan(basePackages = {"com.sanro.filter"}) //这一句完成了配置,Springboot的”懒理念“真的厉害。
    @SpringBootApplication
    public class Application {
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
            log.debug("rest server start success.");
        }
    }
    复制代码

    二、手动配置

    1. Filter类

    复制代码
    @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");
            }
        }
    }
    复制代码

    2. Filter配置类

    复制代码
    @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(){...}即可。
    }
    复制代码
    上善若水,水利万物而不争。
  • 相关阅读:
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    数据库周刊第十七期来啦!
    一文详解MySQL中的事件调度器EVENT
    新买的Mac该如何保养?
    五步搭建自助BI平台,业务分析自给自足,不再等待!
    Oracle坏块处理常用SQL
    懒人看执行计划神器 for Oracle
  • 原文地址:https://www.cnblogs.com/zhoading/p/13516230.html
Copyright © 2011-2022 走看看