Symfony 5 Multiple providers & firewall

Par Lerdouille, il y a 4 ans


Bonjour à tous,

je suis en train de me former à l'utilisation de Symfony et je me casse les dents sur un sujet bien spécifique à savoir la gestion de la sécurity et du contrôle d'accès.
Je suis bien arrivé a créer un User, un Auth, a modifier l'access_control dans le security.yaml, tout fonctionne correctement, si j'essaie d'accéder à la page "customerProfile", je suis rediriger vers la mire d'authent et la connection se fait correctement.

Mon problème se situe plutôt dans le fait que j'aimerais utiliser plusieurs providers et firewalls pour avoir par exemple sur mon site une page d'accès dispo aux clients (pour la gestion de leur profile) et une page d'accès pour les administrateurs (pour la gestion des produits)

Impossible de comprendre comment faire... j'ai bien créer un Authenticator différent du premier dans la partie Controller/Security
j'ai bien déclaré mon provider et mon nouveau firewall mais rien n'y fait, quand j'essaie d'accéder a la page "Admin" je suis rediriger vers la page d'authent "customerProfile"

Voici le security.yaml en question:

security: enable_authenticator_manager: true password_hashers: Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto' App\Entity\Administrator: algorithm: auto App\Entity\Customer: algorithm: auto providers: app_customer_provider: entity: class: App\Entity\Customer property: email app_admin_provider: entity: class: App\Entity\Administrator property: username firewalls: dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false main: lazy: true entry_point: App\Security\CustomerAuthenticator provider: app_customer_provider custom_authenticator: App\Security\CustomerAuthenticator logout: path: app_logout administrator: pattern: ^/admin lazy: true entry_point: App\Security\AdminAuthenticator provider: app_admin_provider custom_authenticator: App\Security\AdminAuthenticator logout: path: app_logout access_control: - { path: ^/admin, roles: ROLE_ADMIN } - { path: ^/profile, roles: ROLE_USER } #- { path: ^/admin, roles: IS_AUTHENTICATED_FULLY } #- { path: ^/profile, roles: IS_AUTHENTICATED_FULLY }

Je précise que toutes les entités sont créées correctement, je ne comprend pas vraiment la logique derriere tout àa.
Est ce que quelqu'un a déjà eu faire face à cette situtation ? Pouvez vous m'éclairer ?

Cdt

1 réponse

Lerdouille, il y a 4 ans

Petite précision, j'ai bien essayé de remplacer "main" par un nom custom avec le pattern ^/profile , dans ce cas la, les deux pages redirigent bien vers leur mire d'authent respective mais la connection ne fonctionne pas (aucune erreur est affichée, je suis redirigé vers le formulaire d'authent)