Q1。问题1:在Spring
Security中,注释的作用
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)是什么?
您引用的文档中对它的作用进行了很好的解释。
要在不更改任何其他自动配置功能的情况下覆盖访问规则,请添加一个WebSecurityConfigurerAdapter类型的@Bean
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)。
但是WebSecurityConfigurerAdapter
,具有的@Order(100)
优先级更高。
没有。
您应该对此部分小心
autoconfiguredfeatures。使用
@EnableAutoConfiguration,它是的一部分
@SpringBootApplication,很多东西是自动配置的,
100不是自动配置的值,而是类上的硬编码值
WebSecurityConfigurerAdapter。
您可以在
SecurityProperties类中找到用于自动配置Spring
Security的订单值,并且可以发现的值
ACCESS_OVERRIDE_ORDER最低,这意味着它具有最高优先级。
他们在哪里自动确认?
您可以找到
@Order(SecurityProperties.BASIC_AUTH_ORDER)在
SpringBootWebSecurityConfiguration课堂上使用的那个。
然后,当被注释@Order(100)
的WebSecurityConfigurerAdapter
使用呢?
例如,如果通过添加禁用自动配置
@EnableWebSecurity,则将使用该值。由于该值的
100优先级过高,因此最好
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)在您的自定义类中添加注释。
Q2。根据上述各种安全功能的顺序,如果我想覆盖管理端点和应用程序其余部分的默认规则,我应该使用什么
使用
ManagementServerProperties ACCESS_OVERRIDE_ORDER。
它具有更高的优先级,因此如果要覆盖所有端点的默认规则,则必须使用它。如果您打开
ManagementServerProperties类,则可以看到如何设置值。
在
SecurityProperties
int ACCESS_OVERRIDE_ORDER = SecurityProperties.BASIC_AUTH_ORDER - 2; // 39int BASIC_AUTH_ORDER = Ordered.LOWEST_PRECEDENCE - 5; // 41
在
ManagementServerProperties
int BASIC_AUTH_ORDER = SecurityProperties.BASIC_AUTH_ORDER - 5; // 36int ACCESS_OVERRIDE_ORDER = ManagementServerProperties.BASIC_AUTH_ORDER - 1; // 35
在注释中,
39意味着
21474839,为了便于阅读,我省略了前6位数字。



