Skip to content

Commit ee13216

Browse files
committed
Merge branch '5.8.x' into 6.0.x
Closes gh-13579
2 parents 0d2315c + c4f061c commit ee13216

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

config/src/main/java/org/springframework/security/config/annotation/method/configuration/MethodSecurityAdvisorRegistrar.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, B
3636
}
3737

3838
private void registerAsAdvisor(String prefix, BeanDefinitionRegistry registry) {
39+
String advisorName = prefix + "Advisor";
40+
if (registry.containsBeanDefinition(advisorName)) {
41+
return;
42+
}
3943
String interceptorName = prefix + "MethodInterceptor";
4044
if (!registry.containsBeanDefinition(interceptorName)) {
4145
return;

config/src/test/java/org/springframework/security/config/annotation/method/configuration/PrePostMethodSecurityConfigurationTests.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2022 the original author or authors.
2+
* Copyright 2002-2023 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -20,6 +20,7 @@
2020
import java.util.ArrayList;
2121
import java.util.Arrays;
2222
import java.util.List;
23+
import java.util.function.Consumer;
2324
import java.util.function.Supplier;
2425

2526
import org.aopalliance.intercept.MethodInterceptor;
@@ -64,6 +65,8 @@
6465
import org.springframework.test.context.ContextConfiguration;
6566
import org.springframework.test.context.TestExecutionListeners;
6667
import org.springframework.test.context.junit.jupiter.SpringExtension;
68+
import org.springframework.web.context.ConfigurableWebApplicationContext;
69+
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
6770

6871
import static org.assertj.core.api.Assertions.assertThat;
6972
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
@@ -418,6 +421,17 @@ public void configureWhenAspectJThenRegistersAspects() {
418421
assertThat(this.spring.getContext().containsBean("annotationSecurityAspect$0")).isFalse();
419422
}
420423

424+
// gh-13572
425+
@Test
426+
public void configureWhenBeanOverridingDisallowedThenWorks() {
427+
this.spring.register(MethodSecurityServiceConfig.class, BusinessServiceConfig.class)
428+
.postProcessor(disallowBeanOverriding()).autowire();
429+
}
430+
431+
private static Consumer<ConfigurableWebApplicationContext> disallowBeanOverriding() {
432+
return (context) -> ((AnnotationConfigWebApplicationContext) context).setAllowBeanDefinitionOverriding(false);
433+
}
434+
421435
@Configuration
422436
@EnableMethodSecurity
423437
static class MethodSecurityServiceConfig {

0 commit comments

Comments
 (0)