小编Man*_*anu的帖子

如何在Spring Boot应用程序中定义Servlet过滤器的执行顺序

我试图在我的spring启动应用程序中设置2个过滤器的执行顺序,它们具有相同的url映射.我尝试在我的主Application类中使用2个过滤器注册bean,如下所示,但是没有用.我希望authorizationFilter先被击中validationFilter.但是,只有validationFilter在两者都配置好的时候它总是会命中.如果我发表评论validationFilter,它就会命中authorizationFilter.

@Bean
public FilterRegistrationBean authorizationFilter(){
    FilterRegistrationBean filterRegBean = new FilterRegistrationBean();
    filterRegBean.setFilter(authorizationFilter);
    List<String> urlPatterns = new ArrayList<String>();
    urlPatterns.add("/v1/*");
    filterRegBean.setUrlPatterns(urlPatterns);
    return filterRegBean;
}

@Bean
public FilterRegistrationBean validationFilter(){
    FilterRegistrationBean filterRegBean = new FilterRegistrationBean();
    filterRegBean.setFilter(validationFilter);
    List<String> urlPatterns = new ArrayList<String>();
    urlPatterns.add("/v1/*");
    filterRegBean.setUrlPatterns(urlPatterns);
    return filterRegBean;
}
Run Code Online (Sandbox Code Playgroud)

我也试过web.xml将可执行jar 引入并转换为war文件.

<web-app>   
<filter>
    <filter-name>authorizationFilter</filter-name>
    <filter-class>com.security.filter.AuthorizationFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>authorizationFilter</filter-name>
    <url-pattern>/v1/*</url-pattern>
</filter-mapping>

<filter>
    <filter-name>validationFilter</filter-name>
    <filter-class>com.security.validation.ValidationFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>validationFilter</filter-name>
    <url-pattern>/v1/*</url-pattern>
</filter-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)

但是应用程序似乎没有识别web.xml,因为它只使用上面的配置命中验证过滤器.我很感激解决这个问题的任何意见.谢谢

spring-boot

36
推荐指数
2
解决办法
5万
查看次数

标签 统计

spring-boot ×1