在启动中的 Spring Security 过滤器链之前调用过滤器

2024-02-06

我已经配置了我的过滤器,如下所示,但它不会在 Spring Security 过滤器链之前被调用。我已将订单设置为零

我正在使用 Spring Boot 1.3,它支持在过滤器上设置顺序

@Bean
public FilterRegistrationBean filterRegistrationBean() {

  FilterRegistrationBean registrationBean = new FilterRegistrationBean();

  registrationBean.setFilter(new UrlRewriteFilter());
  registrationBean.addUrlPatterns("*");
  registrationBean.addInitParameter("confReloadCheckInterval", "5");
  registrationBean.addInitParameter("logLevel", "DEBUG");
  registrationBean.addInitParameter("confPath", "urlrewrite.xml");
  registrationBean.setOrder(0);

  return registrationBean;
}

应用程序属性

security.filter-order=5
//>spring 2.1.3
spring.security.filter-order=5

这些属性会不时发生变化,可以在此处找到

https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html#actuator-properties https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html#actuator-properties

我自己没有这样做,但查看代码,您似乎只需要为安全过滤器的顺序设置一个属性。例如在 application.properties 中

这应该将您的过滤器排列在安全过滤器之前。我不知道改变这个顺序会产生什么影响,就安全而言,我觉得有点冒险。 Spring 开发人员对此进行了讨论。最终他们实施了我上面的答案。

讨论

https://github.com/spring-projects/spring-boot/issues/1640

测试显示此属性的作用。(搜索 testCustomFilterOrder())

https://github.com/spring-projects/spring-boot/blob/1.2.x/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/SecurityAutoConfigurationTests.java

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在启动中的 Spring Security 过滤器链之前调用过滤器 的相关文章

随机推荐