浏览代码

Synthesize all annotation attributes

Issue gh-14601
Josh Cummings 1 年之前
父节点
当前提交
3f7355abc6

+ 1 - 1
config/src/test/java/org/springframework/security/config/annotation/method/configuration/MethodSecurityService.java

@@ -305,7 +305,7 @@ public interface MethodSecurityService {
 	@Target({ ElementType.METHOD, ElementType.TYPE })
 	@Retention(RetentionPolicy.RUNTIME)
 	@Inherited
-	@PostAuthorize(value = "hasRole('{value}')", postProcessorClass = NullPostProcessor.class)
+	@PostAuthorize(value = "hasRole('{role}')", postProcessorClass = NullPostProcessor.class)
 	@interface NullDenied {
 
 		String role();

+ 3 - 1
config/src/test/java/org/springframework/security/config/annotation/method/configuration/PrePostMethodSecurityConfigurationTests.java

@@ -827,7 +827,9 @@ public class PrePostMethodSecurityConfigurationTests {
 	@Test
 	@WithMockUser
 	void postAuthorizeWhenNullDeniedMetaAnnotationThanWorks() {
-		this.spring.register(MethodSecurityServiceEnabledConfig.class, MethodSecurityService.NullPostProcessor.class)
+		this.spring
+			.register(MethodSecurityServiceEnabledConfig.class, MetaAnnotationPlaceholderConfig.class,
+					MethodSecurityService.NullPostProcessor.class)
 			.autowire();
 		MethodSecurityService service = this.spring.getContext().getBean(MethodSecurityService.class);
 		String result = service.postAuthorizeDeniedWithNullDenied();

+ 3 - 2
core/src/main/java/org/springframework/security/authorization/method/AuthorizationAnnotationUtils.java

@@ -19,7 +19,6 @@ package org.springframework.security.authorization.method;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.AnnotatedElement;
 import java.lang.reflect.Method;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -76,7 +75,9 @@ final class AuthorizationAnnotationUtils {
 			}
 			AnnotatedElement annotatedElement = (AnnotatedElement) mergedAnnotation.getSource();
 			String value = helper.replacePlaceholders(expression, stringProperties::get);
-			return MergedAnnotation.of(annotatedElement, type, Collections.singletonMap("value", value)).synthesize();
+			Map<String, Object> properties = new HashMap<>(mergedAnnotation.asMap());
+			properties.put("value", value);
+			return MergedAnnotation.of(annotatedElement, type, properties).synthesize();
 		};
 		return (annotatedElement) -> findDistinctAnnotation(annotatedElement, type, map);
 	}