Configuration de sécurité HTTP multiple dans Spring Security
Dans Spring Security, vous pouvez rencontrer des situations dans lesquelles vous avez besoin de différentes pages de connexion et configurations de sécurité pour différentes sections de votre candidature. Pour y parvenir, vous pouvez tirer parti de l'approche MultipleHttpSecurityConfig.
Dans votre cas spécifique, vous avez configuré deux classes imbriquées, ProviderSecurity et ConsumerSecurity, au sein d'une classe parent annotée avec @EnableWebSecurity. Bien que la configuration de sécurité pour /admin/** fonctionne comme prévu, vous avez constaté que les pages restreintes par "/consumer/**" ne sont pas sécurisées comme prévu.
Analyse
Votre problème vient du fait que vos deux configurations autorisent toutes les requêtes par défaut. Cela permet d'accéder à toutes les pages, quelles que soient les restrictions de sécurité définies. Pour remédier à ce problème, vous devez restreindre explicitement l'accès à des URL ou à des modèles de requête spécifiques.
Solution
Pour résoudre ce problème, mettez en œuvre les étapes suivantes :
Utilisez la méthode antMatcher dans votre configuration ProviderSecurity pour définir les modèles d'URL qu'elle applique à :
@Configuration @Order(1) public static class ProviderSecurity extends WebSecurityConfigurerAdapter{ @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/", "/home").permitAll() .antMatchers("/admin/login").permitAll() .anyRequest().hasRole("BASE_USER") // Restrict all other URLs .and() ... }
De même, dans votre configuration ConsumerSecurity, spécifiez les modèles d'URL qu'il doit sécuriser :
@Configuration @Order(2) public static class ConsumerSecurity extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/consumer/login").permitAll() .anyRequest().hasRole("BASE_USER") // Restrict all other URLs .and() ... }
En restreignant l'accès à des modèles d'URL spécifiques, vous pouvez appliquer la sécurité prévue pour votre application.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!