Maison > Java > javaDidacticiel > Comment configurer plusieurs configurations de sécurité HTTP dans Spring Security pour différentes sections d'application ?

Comment configurer plusieurs configurations de sécurité HTTP dans Spring Security pour différentes sections d'application ?

DDD
Libérer: 2024-12-29 18:09:17
original
456 Les gens l'ont consulté

How to Configure Multiple HTTP Security Configurations in Spring Security for Different Application Sections?

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 :

  1. 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()
                ...
    }
    Copier après la connexion
  2. 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()
                ...
    }
    Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal