在Spring boot 配置過濾器(filter)

在spring boot 配置servlet filter 邏輯上與配置spring 是一樣的。 不過相比spring 更加簡化配置的難度。 這裏只需要兩步


1 創建一個自定義顧慮器並繼承spring filter 例如OncePerRequestFilter

public class AuthenticationFilter extends OncePerRequestFilter{

    	private final Logger logger=LoggerFactory.getLogger(this.getClass());

	
	@Override
	protected void doFilterInternal(HttpServletRequest req, HttpServletResponse resp, FilterChain chain)
			throws ServletException, IOException {
			
			    //code for filtering 
			
			    chain.doFilter(req, resp);
			}
		

}

注: 這裏我使用的是OncePerRequestFilter,目的是爲了保證每次request 只觸發一次filter


2 在spring boot配置filter。 相當於在web.xml 配置<filter></filter> 和filter mapping url pattern

@Configuration
public class StarsFilterConfiguration {

    /*FilterRegistrationBean 用來配置urlpattern 來確定哪些路徑觸發filter */
	@Bean
	public FilterRegistrationBean someFilterRegistration() {

	    FilterRegistrationBean registration = new FilterRegistrationBean();
	    registration.setFilter(AuthFilter());
	    registration.addUrlPatterns("/api/rest/*");
	    registration.setOrder(1);
	    return registration;
	} 
	
    /*使用annotation tag來取代<bean></bean>*/	
	@Bean()
	  public Filter AuthFilter() {
	    return new AuthenticationFilter();
	  }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章