Selon documentation printanière
Ajouter cette annotation à un
@Configuration
La classe doit avoir la configuration Spring Security définie dans n’importe quelleWebSecurityConfigurer
ou plus probablement en étendant la classe de baseWebSecurityConfigurerAdapter
et en surchargeant des méthodes individuelles:
Ou comme ceci @EnableWebSecurity
décrit, est utilisé pour activer SpringSecurity dans notre projet.
Mais ma question est que même si je n'annote aucune de mes classes avec @EnableWebSecurity
toujours l'application demandant le nom d'utilisateur et le mot de passe (comportement par défaut)
Je reçois donc le même comportement avec @EnableWebSecurity
Et sans @EnableWebSecurity
.
Quelqu'un peut-il s'il vous plaît expliquer en quoi consiste exactement cette annotation?
Le @EnableWebSecurity
est une annotation de marqueur. Cela permet au printemps de trouver (c'est un @Configuration
et donc, @Component
) et applique automatiquement la classe au global WebSecurity
.
Si je n'annote aucun de mes cours avec
@EnableWebSecurity
toujours l'application demandant le nom d'utilisateur et le mot de passe.
Oui, c'est le comportement par défaut. Si vous avez regardé votre chemin de classe, vous pourriez trouver d'autres classes marquées avec cette annotation (dépend de vos dépendances):
SpringBootWebSecurityConfiguration
;FallbackWebSecurityAutoConfiguration
;WebMvcSecurityConfiguration
.Examinez-les attentivement, désactivez la configuration requise ou annulez son comportement.
Le Guide de référence du démarrage du printemps explique bien ce sujet. si peut rechercher avec @EnableWebSecurity
:
Pour désactiver complètement la configuration de sécurité des applications Web par défaut, vous pouvez ajouter un bean avec
@EnableWebSecurity
_ (cela ne désactive pas la configuration du gestionnaire d’authentification ni la sécurité de l’actionneur). Pour le personnaliser, vous utilisez normalement des propriétés externes et des beans de typeWebSecurityConfigurerAdapter
(par exemple, pour ajouter une connexion par formulaire)....
Si vous ajoutez
@EnableWebSecurity
et désactivez également la sécurité de l'actionneur, vous obtiendrez la connexion par défaut basée sur un formulaire pour l'ensemble de l'application, sauf si vous ajoutez unWebSecurityConfigurerAdapter
personnalisé....
Si vous définissez un
@Configuration
avec@EnableWebSecurity
n’importe où dans votre application, les paramètres de sécurité par défaut de la Webapp sont désactivés dans Spring Boot (mais la sécurité de l’actionneur est activée). Pour modifier les valeurs par défaut, essayez de définir les propriétés danssecurity.*
(voirSecurityProperties
pour plus de détails sur les paramètres disponibles) et la section SECURITE des propriétés de l'application commune.
Apparemment, il s’agit de désactiver la configuration de sécurité par défaut des applications Web et d’ajouter la vôtre.