Ola, exite alguma forma de colocar as nossas roles de forma hierarquica com Spring Security? Por exemplo dado um sistema que tenha as urls A,B,C,D, e E cujo usuario ADMIN pode acessar todas as funcões e um usuario INTERMEDIARIO acessa somente A,B e C e outro usuario BASICO acesse somente A e B devem ser declaradas da seguinte forma:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/A").hasRole("ADMIN")
.antMatchers("/B").hasRole("ADMIN")
.antMatchers("/C").hasRole("ADMIN")
.antMatchers("/D").hasRole("ADMIN")
.antMatchers("/E").hasRole("ADMIN")
.antMatchers("/A").hasRole("INTERMEDIARIO")
.antMatchers("/B").hasRole("INTERMEDIARIO")
.antMatchers("/C").hasRole("INTERMEDIARIO")
.antMatchers("/A").hasRole("BASICO")
.antMatchers("/B").hasRole("BASICO")
.antMatchers("/").permitAll()
.anyRequest().authenticated()
.and().formLogin().loginPage("/login").permitAll()
.and().logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout"));
}
Isso da muito trabalho sem falar na repetibilidade, sera que nao tem uma maneira de dizer mais ou menos isso:
ADMIN_ROLE.Access(new String{'A','B','C','D','E'});
INTERMEDIARIO_ROLE.Access(new String{'A','B','C'});
BASICO_ROLE.Access(new String{'A','B'});
Ou ate atraves da url
url('A').canAccess('ADMIN','INTERMEDIARIO','BASICO');
url('A').canAccess('ADMIN','INTERMEDIARIO','BASICO');
url('A').canAccess('ADMIN','INTERMEDIARIO','BASICO');
Sabe qualquer coisa menos repetível Desde ja muito obrigado