SpringBoot中攔截器和過濾器的使用

1、攔截器

三種方式java

  • 繼承WebMvcConfigurerAdapter   spring5.0 以棄用,不推薦
  • 實現WebMvcConfigurer  推薦
  • 繼承WebMvcConfigurationSupport  會致使springboot自動配置失效

因此推薦使用第二種,方案,接口中的方法是default ,沒必要實現全部方法web

代碼:spring

 

import com.starfast.admin.interceptor.PermissionInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @author DUCHONG
 **/
@Configuration
public class AdminWebConfig implements WebMvcConfigurer {

    @Autowired
    private PermissionInterceptor permissionInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {

        registry.addInterceptor(permissionInterceptor)
                .addPathPatterns("/**")
                .excludePathPatterns("/monitor/druid/*")
                .excludePathPatterns("/user/login")
                .excludePathPatterns("/user/logout")
                ;

    }
}

 

2、過濾器

跨域過濾器跨域

import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class CrossOriginFilter implements Filter {
    public void destroy() {
        System.out.println("----Filter銷燬----");
    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {

        HttpServletResponse httpServletResponse = (HttpServletResponse)response;
        httpServletResponse.setHeader("Access-Control-Allow-Origin", "*");
        httpServletResponse.setHeader("Access-Control-Allow-Headers", "Authentication");
        // 執行目標資源,放行
        filterChain.doFilter(request, response); 
    }

    public void init(FilterConfig arg0) throws ServletException {
        System.out.println("----Filter初始化----");
    }

}

添加到配置中,也能夠和攔截器的配置放在一塊springboot

import com.starfast.admin.filter.CrossOriginFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Arrays;

/**
 * 跨域過濾器
 * @author DUCHONG
 **/
@Configuration
public class ServletConfig {

    @Bean
    public FilterRegistrationBean crossOriginFilter(){

        FilterRegistrationBean filterRegistrationBean=new FilterRegistrationBean();
        filterRegistrationBean.setFilter(new CrossOriginFilter());
        filterRegistrationBean.setUrlPatterns(Arrays.asList("/router/**"));

        return filterRegistrationBean;
    }
}
相關文章
相關標籤/搜索