Il tuo codice stampa questo:
amministratore , gestore , utilizzatore
Ma questo non renderizza nulla:
<div sec:authorize="hasRole('amministratore')">
Amministratore
</div>
Questo invece funziona:
<div sec:authorize="isAuthenticated()">
Utente registrato
</div>
e stampa "Utente registrato".
Ho provato a rimuovere questo pezzo:
@Bean
GrantedAuthorityDefaults grantedAuthorityDefaults() {
return new GrantedAuthorityDefaults(""); // Remove/cambia il prefisso ROLE_.
}
e ad usare questo:
<div sec:authorize="hasRole('ROLE_amministratore')">
Amministratore
</div>
e tutto funziona a meraviglia.
In pratica l'errore è nel @Bean che uso per rimuovere ROLE_ dal DBMS.
La domanda ora è un'altra:
come rimuovo questo schifosissimo ROLE_?
P.S.:
Ho qualcosa di analogo al tuo codice:
public class FunzioniWeb {
public static String creaLaStringa(User user) {
StringBuilder sb = new StringBuilder();
sb.append("Nome Utente: ").append(user.getUsername());
Collection<GrantedAuthority> authorities = user.getAuthorities();
if (authorities != null && !authorities.isEmpty()) {
sb.append(" (");
boolean first = true;
for (GrantedAuthority a : authorities) {
if (first) {
sb.append(a.getAuthority());
first = false;
} else {
sb.append(", ").append(a.getAuthority());
}
}
sb.append(")");
}
return sb.toString();
}
}
C'è "giusto" qualche riga di codice in più...