2016-11-23 7 views
-1

Ich baue eine Anwendung mit Spring und ich verwendete Spring Security. Die Sache ist, dass ich es mit der authorizeRequests-Kette nicht richtig machen kann. Ich habe 3 Rollen:403 Zugriff verweigert mit Spring Security

ROLE_RH hat Zugriff auf die Ansichten mit dem Kontext RH

ROLE_GP hat Zugriff auf die Ansichten mit dem Kontext GP

ROLE_SUPER die Ansicht Zugriff auf alle, darunter Kontext RH und

GP

Meine authorizeRequests Kette sieht wie folgt aus:

http.authorizeRequests() 
     .antMatchers("/bootstrap/**", "/dist/**", "/plugins/**").permitAll() 
     .antMatchers("/RH/**").hasRole("RH") 
     .antMatchers("/GP/**").hasRole("GP") 
     .antMatchers("/**").hasRole("SUPER") 
     .and() 
    .formLogin() 
     .failureUrl("/login?error") 
     .loginPage("/login").usernameParameter("nombreUsuario").passwordParameter("contrasena") 
     .defaultSuccessUrl("/default") 
     .and() 
    .logout() 
     .logoutRequestMatcher(new AntPathRequestMatcher("/logout")) 
     .logoutSuccessUrl("/login") 
     .permitAll() 
     .and().csrf() 
     .and().exceptionHandling().accessDeniedPage("/403"); 

Aber wenn ich als ROLE_SUPER angemeldet bin kann ich nicht zugreifen zu RH und G P views, ich habe Zugang jedes Mal verweigert. Ich versuchte, die .antMatcher von ROLE_SUPER zu diesem

.antMatchers("/GP/**","/RH/**","/DB/**").hasRole("SUPER") 

ändern und wenn ich versuche, wie ROLE_GP oder ROLE_RH ich Zugang zu ihren Ansichten verweigert bekommen loggt sein. Rollen können nicht den gleichen Kontext teilen? Wenn ROLE_SUPER funktioniert, funktionieren ROLE_GP und ROLE_RH nicht und umgekehrt. Was mache ich falsch?

Vielen Dank im Voraus für Ihre Hilfe.

Antwort

0

habe ich einige der Forschung und die Lösung, die für mich gearbeitet:

http.authorizeRequests() 
     .antMatchers("/bootstrap/**", "/dist/**", "/plugins/**").permitAll() 
     .antMatchers("/DB/**").hasRole("SUPER") 
     .antMatchers("/RH/**").access("hasRole('ROLE_SUPER') or hasRole('ROLE_RH')") 
     .antMatchers("/GP/**").access("hasRole('ROLE_SUPER') or hasRole('ROLE_GP')") 
Verwandte Themen