@@ -57,12 +57,15 @@ public void setRoleHierarchy(RoleHierarchy roleHierarchy) {
5757 /**
5858 * Creates an instance of {@link AuthorityAuthorizationManager} with the provided
5959 * authority.
60- * @param role the authority to check for prefixed with "ROLE_"
60+ * @param role the authority to check for prefixed with "ROLE_". Role should not start
61+ * with "ROLE_" since it is automatically prepended already.
6162 * @param <T> the type of object being authorized
6263 * @return the new instance
6364 */
6465 public static <T > AuthorityAuthorizationManager <T > hasRole (String role ) {
6566 Assert .notNull (role , "role cannot be null" );
67+ Assert .isTrue (!role .startsWith (ROLE_PREFIX ), () -> role + " should not start with " + ROLE_PREFIX + " since "
68+ + ROLE_PREFIX + " is automatically prepended when using hasRole. Consider using hasAuthority instead." );
6669 return hasAuthority (ROLE_PREFIX + role );
6770 }
6871
@@ -81,7 +84,8 @@ public static <T> AuthorityAuthorizationManager<T> hasAuthority(String authority
8184 /**
8285 * Creates an instance of {@link AuthorityAuthorizationManager} with the provided
8386 * authorities.
84- * @param roles the authorities to check for prefixed with "ROLE_"
87+ * @param roles the authorities to check for prefixed with "ROLE_". Each role should
88+ * not start with "ROLE_" since it is automatically prepended already.
8589 * @param <T> the type of object being authorized
8690 * @return the new instance
8791 */
@@ -120,7 +124,11 @@ public static <T> AuthorityAuthorizationManager<T> hasAnyAuthority(String... aut
120124 private static String [] toNamedRolesArray (String rolePrefix , String [] roles ) {
121125 String [] result = new String [roles .length ];
122126 for (int i = 0 ; i < roles .length ; i ++) {
123- result [i ] = rolePrefix + roles [i ];
127+ String role = roles [i ];
128+ Assert .isTrue (!role .startsWith (rolePrefix ), () -> role + " should not start with " + rolePrefix + " since "
129+ + rolePrefix
130+ + " is automatically prepended when using hasAnyRole. Consider using hasAnyAuthority instead." );
131+ result [i ] = rolePrefix + role ;
124132 }
125133 return result ;
126134 }
0 commit comments