Plusieurs pare-feu améliorent la sécurité dans Symfony 5.4
P粉952365143
P粉952365143 2023-08-26 16:14:30
0
1
623
<p>J'essaie de séparer l'authentification de l'utilisateur de celle de l'administrateur. </p> <p>J'ai donc créé 2 pare-feu et 2 contrôles d'accès différents. </p> <p>Mon fichier security.yaml est le suivant :</p> <pre class="brush:php;toolbar:false;">enable_authenticator_manager : true mot de passe_hashers : SymfonyComponentSecurityCoreUserPasswordAuthenticatedUserInterface : 'auto' fournisseurs: authentification_propriétaire : entité: classe : AppEntityMerchantOwner propriété : adressee-mail Authentification d'utilisateur: entité: classe : AppEntityUserUser propriété : adressee-mail pare-feu : développeur : modèle : ^/(_(profiler|wdt)|css|images|js)/ sécurité : faux utilisateur: paresseux : vrai modèle : ^/admin/login/ fournisseur : user_authentication user_checker : AppSecurityAuthentificableModelChecker formulaire_login : fournisseur : user_authentication default_target_path : app.dashboard.index use_referer : vrai use_forward : faux chemin_de_connexion : app.authorization.admin_login check_path : app.authorization.admin_login paramètre_nom_utilisateur : connexion[emailAddress] paramètre_mot de passe : connexion[mot de passe] Se déconnecter: chemin : app.authorization.logout cible : app.authorization.admin_login principal: paresseux : vrai modèle : ^/ fournisseur : owner_authentication user_checker : AppSecurityAuthentificableModelChecker formulaire_login : fournisseur : owner_authentication default_target_path : app.dashboard.index use_referer : vrai use_forward : faux chemin_de_connexion : app.authorization.login check_path : app.authorization.login paramètre_nom_utilisateur : connexion[emailAddress] paramètre_mot de passe : connexion[mot de passe] Se déconnecter: chemin : app.authorization.logout cible : app.authorization.login contrôle d'accès: - { chemin : ^/admin/login, rôles : PUBLIC_ACCESS} - { chemin : ^/login, rôles : PUBLIC_ACCESS } - { chemin : ^/, rôles : ROLE_USER }</pre> <p>Tout fonctionne bien sur le pare-feu principal, mais lorsque j'utilise le bouton de soumission du pare-feu utilisateur (administrateur), la page de connexion se rafraîchit et rien ne se passe. Je ne reçois aucune erreur. </p> <p>** Si j'ajoute une connexion utilisateur (administrateur) sur le pare-feu principal, alors /admin/login fonctionne correctement et l'autre ne fonctionne plus. </p> <p>Lorsque j'appelle <code>$authenticationUtils->getLastAuthenticationError()</code>, je ne reçois aucune erreur. Mais la validation ne fonctionne pas non plus.</p> <p>Voici à quoi ressemble mon contrôleur : </p> <pre class="brush:php;toolbar:false;">fonction publique adminLogin(AuthenticationUtils $authenticationUtils) : réponse { si ($this->getUser()) { return $this->redirectToRoute('app.dashboard.index'); } $loginForm = $this->createForm(LoginType::class, ['emailAddress' => $authenticationUtils->getLastUsername()]); return $this->renderForm('app/pages/authorization/admin_login.html.twig', [ 'title' => 'Connexion', 'login_form' => 'erreur' => $authenticationUtils->getLastAuthenticationError()?->getMessageKey(), ]); }</pré> <p>C'est le même problème que quelqu'un a eu : https://grafikart.fr/forum/35234, mais je n'ai trouvé aucune solution. </p>
P粉952365143
P粉952365143

répondre à tous(1)
P粉041881924

Enfin, j'ai trouvé la réponse et je la posterai ici : https://stackoverflow.com/a/42352112/8003007 Tout ce que j'ai à faire est d'en ajouter un context: my_context aux deux pare-feu.

Il s'agit d'une option difficile à identifier car elle n'apparaît pas dans la documentation officielle et actuelle de Symfony, uniquement dans les versions précédentes, telles que Symfony 3.4.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal