@@ -1382,12 +1382,15 @@ Java::
13821382[source,java,role="primary"]
13831383----
13841384@Component
1385- public class MyAuthorizationManager implements AuthorizationManager<MethodInvocation>, AuthorizationManager<MethodInvocationResult > {
1385+ public class MyPreAuthorizeAuthorizationManager implements AuthorizationManager<MethodInvocation> {
13861386 @Override
13871387 public AuthorizationResult authorize(Supplier<Authentication> authentication, MethodInvocation invocation) {
13881388 // ... authorization logic
13891389 }
1390+ }
13901391
1392+ @Component
1393+ public class MyPostAuthorizeAuthorizationManager implements AuthorizationManager<MethodInvocationResult> {
13911394 @Override
13921395 public AuthorizationResult authorize(Supplier<Authentication> authentication, MethodInvocationResult invocation) {
13931396 // ... authorization logic
@@ -1400,11 +1403,14 @@ Kotlin::
14001403[source,kotlin,role="secondary"]
14011404----
14021405@Component
1403- class MyAuthorizationManager : AuthorizationManager<MethodInvocation>, AuthorizationManager<MethodInvocationResult > {
1406+ class MyPreAuthorizeAuthorizationManager : AuthorizationManager<MethodInvocation> {
14041407 override fun authorize(authentication: Supplier<Authentication>, invocation: MethodInvocation): AuthorizationResult {
14051408 // ... authorization logic
14061409 }
1410+ }
14071411
1412+ @Component
1413+ class MyPostAuthorizeAuthorizationManager : AuthorizationManager<MethodInvocationResult> {
14081414 override fun authorize(authentication: Supplier<Authentication>, invocation: MethodInvocationResult): AuthorizationResult {
14091415 // ... authorization logic
14101416 }
@@ -1427,13 +1433,13 @@ Java::
14271433class MethodSecurityConfig {
14281434 @Bean
14291435 @Role(BeanDefinition.ROLE_INFRASTRUCTURE)
1430- Advisor preAuthorize(MyAuthorizationManager manager) {
1436+ Advisor preAuthorize(MyPreAuthorizeAuthorizationManager manager) {
14311437 return AuthorizationManagerBeforeMethodInterceptor.preAuthorize(manager);
14321438 }
14331439
14341440 @Bean
14351441 @Role(BeanDefinition.ROLE_INFRASTRUCTURE)
1436- Advisor postAuthorize(MyAuthorizationManager manager) {
1442+ Advisor postAuthorize(MyPostAuthorizeAuthorizationManager manager) {
14371443 return AuthorizationManagerAfterMethodInterceptor.postAuthorize(manager);
14381444 }
14391445}
@@ -1446,15 +1452,15 @@ Kotlin::
14461452@Configuration
14471453@EnableMethodSecurity(prePostEnabled = false)
14481454class MethodSecurityConfig {
1449- @Bean
1455+ @Bean
14501456 @Role(BeanDefinition.ROLE_INFRASTRUCTURE)
1451- fun preAuthorize(manager: MyAuthorizationManager) : Advisor {
1457+ fun preAuthorize(manager: MyPreAuthorizeAuthorizationManager) : Advisor {
14521458 return AuthorizationManagerBeforeMethodInterceptor.preAuthorize(manager)
14531459 }
14541460
14551461 @Bean
14561462 @Role(BeanDefinition.ROLE_INFRASTRUCTURE)
1457- fun postAuthorize(manager: MyAuthorizationManager) : Advisor {
1463+ fun postAuthorize(manager: MyPostAuthorizeAuthorizationManager) : Advisor {
14581464 return AuthorizationManagerAfterMethodInterceptor.postAuthorize(manager)
14591465 }
14601466}
@@ -1471,13 +1477,13 @@ Xml::
14711477<bean id="preAuthorize"
14721478 class="org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor"
14731479 factory-method="preAuthorize">
1474- <constructor-arg ref="myAuthorizationManager "/>
1480+ <constructor-arg ref="myPreAuthorizeAuthorizationManager "/>
14751481</bean>
14761482
14771483<bean id="postAuthorize"
14781484 class="org.springframework.security.authorization.method.AuthorizationManagerAfterMethodInterceptor"
14791485 factory-method="postAuthorize">
1480- <constructor-arg ref="myAuthorizationManager "/>
1486+ <constructor-arg ref="myPostAuthorizeAuthorizationManager "/>
14811487</bean>
14821488----
14831489======
@@ -1487,6 +1493,8 @@ Xml::
14871493You can place your interceptor in between Spring Security method interceptors using the order constants specified in `AuthorizationInterceptorsOrder`.
14881494====
14891495
1496+ You can also implement `MethodAuthorizationDeniedHandler` in the same manager class to override the default exception-handling behavior.
1497+
14901498[[customizing-expression-handling]]
14911499=== Customizing Expression Handling
14921500
0 commit comments