J'ai déclaré la classe qui implémente WebSecurityConfigurerAdapter. Après un processus LOGIN réussi, je redirige l'utilisateur vers la page/main/list que j'ai déclarée dans authorizeRequests et lier le rôle "v_main" à l'URL de cette requête. Mais mon déclarai ci-dessous la configuration me retourne à la page ACCESS_DENIED que j'ai déclaré queLa configuration de WebSecurityConfigurerAdapter ne gère pas les demandes correctement
accessDeniedPage@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class AppSecurityConfig extends WebSecurityConfigurerAdapter {
protected static Logger log = Logger.getLogger(AppSecurityConfig.class);
@Autowired
private CustomAuthenticationProvider authProvider;
@Autowired
public void configAuthentication(AuthenticationManagerBuilder auth) throws Exception {
log.info("configAuthentication");
auth.authenticationProvider(authProvider);
}
@Override
public void configure(WebSecurity web) throws Exception {
log.info("configure WebSecurity");
web.ignoring()
.antMatchers("/assets/**");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
log.info("configure HttpSecurity");
http
.formLogin()
.loginPage("/login")
.permitAll()
.loginProcessingUrl("/login")
.usernameParameter("username").passwordParameter("password")
.defaultSuccessUrl("/main/list")
.failureUrl("/login?fail=1")
.and()
.authorizeRequests()
.antMatchers("/main/**").hasRole("v_role")
.anyRequest().authenticated()
.and()
.logout()
//.logoutUrl("/logout")
.logoutSuccessUrl("/login?logout")
.invalidateHttpSession(true)
.and()
.exceptionHandling()
.accessDeniedPage("/access_denied")
.and()
.csrf();
}
Ma réponse
Ce que je avais besoin était de changer hasRole à hasAuthority.
.antMatchers("/main/**").hasAuthority("v_main")
Parce que je suis en train de rôle avec SimpleGrantedAuthority
Merci pour votre réponse. Je définis le rôle dans mon CustomAuthenticationProvider qui implémente AuthenticationProvider et dans sa méthode d'authentification je mets le rôle à l'utilisateur. BTW j'ai testé votre code et il me retourne le rôle correct – AEMLoviji
does request.isUserInRole (ga.getAuthority())) vrai pour ce rôle que vous vérifiez – Mudassar
désolé non. Je viens de le tester qu'est-ce que ça rend. Et cela me renvoie le rôle que j'ai défini à l'utilisateur. Mais comme vous l'avez dit isUserInRole ne retourne pas vrai. Et qu'est-ce qu'un problème? – AEMLoviji