问题1: 在Spring Security中,确切的功能是什么
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
Spring文档陈述以下内容,但我不确定我是否清楚理解
要在不更改任何其他自动配置功能的情况下覆盖访问规则,请添加一个WebSecurityConfigurerAdapter类型的@Bean
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
。
根据我的理解,Spring Security中各种安全功能的顺序如下(最低值,即最高优先级到最高值,即最低优先级)
Ordered.HIGHEST_PRECEDENCE
= -2 ^ 31-1Access_Override_Order = Basic_Auth_Order -2
用于 安全属性Access_Override_Order = Basic_Auth_Order -1
for ManagementServerProperties Basic_Auth_Order-2
= 2 ^ 31-7 Basic_Auth_Order = Ordered.Lowest_Precendence -5 = 2^31-5
Ordered.LOWEST_PRECEDENCE = 2^31
Question2 根据上述各种安全功能的顺序,如果我想覆盖管理端点和应用程序其余部分的默认规则,则应使用
我目前正在使用,SecurityProperties ACCESS_OVERRIDE_ORDER
但根据这里的建议 ,我需要启用ACTUATOR ManagementServerProperties ACCESS_OVERRIDE_ORDER
。如果我两个都想工作,应该覆盖哪一个?
谢谢。
Security中,注释的作用@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
是什么?
您引用的文档中对它的作用进行了很好的解释。
要在不更改任何其他自动配置功能的情况下覆盖访问规则,请添加一个WebSecurityConfigurerAdapter类型的@Bean
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
。
但是WebSecurityConfigurerAdapter
,具有的@Order(100)
优先级更高。
没有。
您应该对此部分小心autoconfigured features
。使用@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)
在您的自定义类中添加注释。
使用ManagementServerProperties ACCESS_OVERRIDE_ORDER
。
它具有更高的优先级,因此如果要覆盖所有端点的默认规则,则必须使用它。如果您打开ManagementServerProperties
类,则可以看到如何设置值。
在 SecurityProperties
int ACCESS_OVERRIDE_ORDER = SecurityProperties.BASIC_AUTH_ORDER - 2; // 39
int BASIC_AUTH_ORDER = Ordered.LOWEST_PRECEDENCE - 5; // 41
在 ManagementServerProperties
int BASIC_AUTH_ORDER = SecurityProperties.BASIC_AUTH_ORDER - 5; // 36
int ACCESS_OVERRIDE_ORDER = ManagementServerProperties.BASIC_AUTH_ORDER - 1; // 35
在注释中,39
意味着21474839
,为了便于阅读,我省略了前6位数字。
问题内容: 我目前正在评估基于Java的安全框架,我是Spring 3.0用户,因此似乎似乎SpringSecurity是正确的选择,但是Spring安全性似乎受到过分复杂的困扰,它似乎并没有使安全性易于实现, Shiro似乎更加连贯,更容易理解。我正在寻找这两个框架之间的利弊清单。 问题答案: 我也同意Spring Security对我来说感觉太复杂了。当然,他们已经做了一些降低复杂性的事情,例
主要内容:1.入门,2.设置用户名和密码1.入门 1.启动一个SpringBoot项目 2.导入SpringSecurity相关依赖 3.编写Controller TestController.java 用户是user 密码是刚刚的 2.设置用户名和密码 1.在配置文件中设置 2.在配置类中设置 3.自定义实现类 2.1 配置文件中设置 2.2 在配置类中设置 设置用户名为zZZ,密码为root 2.3 自定义实现类 配置类: 业务类:
问题内容: 我似乎无法与db.Select()动态进行ORDER BY。我已经没有任何运气谷歌了… 作品 不起作用 我没有收到任何错误,查询只是无法排序。 问题答案: 占位符()仅可用于为应在其中显示数据值的过滤器参数(例如,在零件中)插入动态的转义值,而不能用于SQL关键字,标识符等。您不能使用它来动态指定OR 值。 不过,您仍然可以执行此操作,例如,可以使用以下方式来组装动态查询文本: 注意事
问题内容: 在以下查询中,您认为哪种方法更好?您的原因是什么(代码效率,更好的可维护性,更少的WTFery)… 问题答案: 在最坏的情况下,如果要查看未索引的字段,则使用需要对表进行一次完整的遍历。使用并且需要一个文件排序。如果针对大表运行,则预期的性能可能会存在显着差异。作为无意义的数据点,我的开发服务器上的106,000行表花了0.36秒,花了0.84秒。 但是,如果您正在查看索引列,则很难注
在WAR的情况下,它试图将请求转发到/error页面,并寻找它的处理程序方法(请参见底部的日志)。 最后我得到以下回应: 我该换什么才能得到401?
1.导入jar包 web.xml spring-security.xml