此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Security 6.5.0! |
授权更改
以下部分与如何适应授权支持中的更改相关。
方法安全性
编译方式-parameters
Spring Framework 6.1 删除了LocalVariableTableParameterNameDiscoverer。
这会影响@PreAuthorize
和其他方法安全注释将处理参数名称。
如果将方法安全性注释与参数名称一起使用,例如:
id
参数名称@PreAuthorize("@authz.checkPermission(#id, authentication)")
public void doSomething(Long id) {
// ...
}
您必须使用-parameters
以确保参数名称在运行时可用。
有关此内容的更多信息,请访问升级到 Spring Framework 6.1 页面。
喜爱AnnotationTemplateExpressionDefaults
多PrePostTemplateDefaults
在 Spring Security 7 中,AnnotationTemplateExpressionDefaults
将默认包含。
如果您正在自定义PrePostTemplateDefaults
或者只是想查看您的应用程序如何响应AnnotationTemplateExpressionDefaults
中,您可以发布AnnotationTemplateExpressionDefaults
bean 而不是PrePostTemplateDefaults
方法:
-
Java
-
Kotlin
-
Xml
@Bean
static AnnotationTemplateExpressionDefaults templateExpressionDefaults() {
return new AnnotationTemplateExpressionDefaults();
}
companion object {
@Bean
fun templateExpressionDefaults() = AnnotationTemplateExpressionDefaults()
}
<b:bean id="templateExpressionDefaults" class="org.springframework.security.core.annotation.AnnotationTemplateExpressionDefaults"/>
我正在发布 AuthorizationAdvisor Bean
如果要发布AuthorizationAdvisor
bean 一样AuthorizationManagerBeforeMethodInterceptor
,AuthorizationManagerAfterMethodInterceptor
,PreFilterAuthorizationMethodInterceptor
或PostFilterAuthorizationMethodInterceptor
,您可以通过调用setTemplateDefaults
替换为AnnotationTemplateExpressionDefaults
instance 改为:
-
Java
-
Kotlin
@Bean
@Role(BeanDescription.ROLE_INFRASTRUCTURE)
static Advisor preFilter() {
PreFilterAuthorizationMethodInterceptor interceptor = new PreFilterAuthorizationMethodInterceptor();
interceptor.setTemplateDefaults(new AnnotationTemplateExpressionDefaults());
return interceptor;
}
companion object {
@Bean
@Role(BeanDescription.ROLE_INFRASTRUCTURE)
fun preFilter(): Advisor {
val interceptor = PreFilterAuthorizationMethodInterceptor()
interceptor.setTemplateDefaults(AnnotationTemplateExpressionDefaults)
return interceptor
}
}
发布AuthorizationAdvisor
实例,而不是将它们添加到Customizer<AuthorizationAdvisorProxyFactory>
虽然能够自定义AuthorizationAdvisorProxyFactory
实例将保留在 Spring Security 7 中,添加顾问程序的功能将被删除,以支持选择已发布的AuthorizationAdvisor
豆。
如果您未调用AuthorizationAdvisorProxyFactory#setAdvisors
或AuthorizationAdvisorProxyFactory#addAdvisor
,则无需执行任何作。
如果是,请发布AuthorizationAdvisor
bean 代替 bean 和 Spring Security 会自动获取并应用它。