鍍金池/ 問(wèn)答/Java  網(wǎng)絡(luò)安全  HTML/ Spring加了多個(gè)filer,導(dǎo)致跨域filer不起作用,怎么回事?

Spring加了多個(gè)filer,導(dǎo)致跨域filer不起作用,怎么回事?

各位前輩,我做了2個(gè)filter,一個(gè)是跨域一個(gè)是token驗(yàn)證。
然后在springboot下注冊(cè)2個(gè)過(guò)濾器,代碼是:

@Bean
public FilterRegistrationBean getDemoFilter() {
    CrossFilter crossFilter = new CrossFilter();
    TokenFilter tokenFilter = new TokenFilter();
    FilterRegistrationBean registrationBean = new FilterRegistrationBean();
    registrationBean.setFilter(crossFilter);
    registrationBean.setFilter(tokenFilter);
    List<String> urlPatterns = new ArrayList<String>();
    urlPatterns.add("/*");
    registrationBean.setUrlPatterns(urlPatterns);
    registrationBean.setOrder(1);
    return registrationBean;
}

這2個(gè)過(guò)濾器分開(kāi)來(lái)使用都是可用的,但是這樣直接注冊(cè)就,跨域就無(wú)法使用。這是為什么呢?是不是order的問(wèn)題?如果是,請(qǐng)問(wèn)如何設(shè)置順序?
謝謝各位前輩。

回答
編輯回答
敢試

那個(gè)方法名字是 setFileter 不是 addFileter,所以你使用 tokenFilter 覆蓋了 crossFilter
如果是一個(gè)全局的 Fileter 其實(shí)可以這樣子

@Bean
public class SomeFileter extends OncePerRequestFilter{
    //...
}
2018年7月16日 04:07