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


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)