権限の変更
次のセクションでは、認可サポートの変更に適応する方法について説明します。
メソッドのセキュリティ
-parameters
でコンパイルする
Spring Framework 6.1 は LocalVariableTableParameterNameDiscoverer を削除します [GitHub] (英語) 。これは、@PreAuthorize
およびその他のメソッドセキュリティアノテーションがパラメーター名を処理する方法に影響します。パラメーター名を含むメソッドセキュリティアノテーションを使用している場合、例:
id
パラメーター名を使用したメソッドセキュリティアノテーション @PreAuthorize("@authz.checkPermission(#id, authentication)")
public void doSomething(Long id) {
// ...
}
パラメーター名が実行時に使用できるようにするには、-parameters
を使用してコンパイルする必要があります。詳細については、Spring Framework 6.1 ページへのアップグレード [GitHub] (英語) を参照してください。
PrePostTemplateDefaults
よりも AnnotationTemplateExpressionDefaults
を優先します
Spring Security 7 では、AnnotationTemplateExpressionDefaults
がデフォルトで含まれます。
PrePostTemplateDefaults
をカスタマイズしている場合、または単にアプリケーションが AnnotationTemplateExpressionDefaults
にどのように応答するかを確認したい場合は、PrePostTemplateDefaults
メソッドの代わりに AnnotationTemplateExpressionDefaults
Bean を公開できます。
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 を公開しています
AuthorizationManagerBeforeMethodInterceptor
、AuthorizationManagerAfterMethodInterceptor
、PreFilterAuthorizationMethodInterceptor
や PostFilterAuthorizationMethodInterceptor
などの AuthorizationAdvisor
Bean を公開する場合は、代わりに AnnotationTemplateExpressionDefaults
インスタンスを使用して setTemplateDefaults
を呼び出すことで同じことができます。
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
}
}
Customizer<AuthorizationAdvisorProxyFactory>
に追加するのではなく、AuthorizationAdvisor
インスタンスを公開する
AuthorizationAdvisorProxyFactory
インスタンスをカスタマイズする機能は Spring Security 7 に残りますが、公開された AuthorizationAdvisor
Bean を選択するためにアドバイザーを追加する機能は削除されます。
AuthorizationAdvisorProxyFactory#setAdvisors
または AuthorizationAdvisorProxyFactory#addAdvisor
を呼び出していない場合は、何もする必要はありません。
もしそうなら、代わりに AuthorizationAdvisor
Bean を公開すると、Spring Security がそれを取得して自動的に適用します。