|
35 | 35 | import org.springframework.security.config.annotation.ObjectPostProcessor; |
36 | 36 | import org.springframework.security.config.annotation.web.AbstractRequestMatcherRegistry; |
37 | 37 | import org.springframework.security.config.annotation.web.HttpSecurityBuilder; |
| 38 | +import org.springframework.security.config.core.GrantedAuthorityDefaults; |
38 | 39 | import org.springframework.security.web.access.intercept.AuthorizationFilter; |
39 | 40 | import org.springframework.security.web.access.intercept.RequestAuthorizationContext; |
40 | 41 | import org.springframework.security.web.access.intercept.RequestMatcherDelegatingAuthorizationManager; |
@@ -62,11 +63,22 @@ public final class AuthorizeHttpRequestsConfigurer<H extends HttpSecurityBuilder |
62 | 63 |
|
63 | 64 | private final Supplier<RoleHierarchy> roleHierarchy; |
64 | 65 |
|
| 66 | + private final String rolePrefix; |
| 67 | + |
65 | 68 | /** |
66 | 69 | * Creates an instance. |
67 | 70 | * @param context the {@link ApplicationContext} to use |
68 | 71 | */ |
69 | 72 | public AuthorizeHttpRequestsConfigurer(ApplicationContext context) { |
| 73 | + String[] grantedAuthorityDefaultsBeanNames = context.getBeanNamesForType(GrantedAuthorityDefaults.class); |
| 74 | + if (grantedAuthorityDefaultsBeanNames.length == 1) { |
| 75 | + GrantedAuthorityDefaults grantedAuthorityDefaults = context.getBean(grantedAuthorityDefaultsBeanNames[0], |
| 76 | + GrantedAuthorityDefaults.class); |
| 77 | + this.rolePrefix = grantedAuthorityDefaults.getRolePrefix(); |
| 78 | + } |
| 79 | + else { |
| 80 | + this.rolePrefix = "ROLE_"; |
| 81 | + } |
70 | 82 | this.registry = new AuthorizationManagerRequestMatcherRegistry(context); |
71 | 83 | if (context.getBeanNamesForType(AuthorizationEventPublisher.class).length > 0) { |
72 | 84 | this.publisher = context.getBean(AuthorizationEventPublisher.class); |
@@ -279,7 +291,8 @@ public AuthorizationManagerRequestMatcherRegistry denyAll() { |
279 | 291 | * customizations |
280 | 292 | */ |
281 | 293 | public AuthorizationManagerRequestMatcherRegistry hasRole(String role) { |
282 | | - return access(withRoleHierarchy(AuthorityAuthorizationManager.hasRole(role))); |
| 294 | + return access(withRoleHierarchy(AuthorityAuthorizationManager |
| 295 | + .hasAuthority(AuthorizeHttpRequestsConfigurer.this.rolePrefix + role))); |
283 | 296 | } |
284 | 297 |
|
285 | 298 | /** |
|
0 commit comments