Ajouter une exception de sécurité

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour,

Je suis aujourd'hui confronté à un problème simple mais qui, du fait que je sois un peu maniaque, devient assez énervant à résoudre.

Dans mon fichier de sécurité, j'ai défini un firewall sur l'ensemble de l'application qui autorise les connexion en anonyme. Cela me permet de savoir si un utilisateur est connecté et si c'est le cas d'afficher des infos sur son profil dans le header.

Ensuite, j'ai défini un contrôle d'accès sur toutes les urls commençant par /user pour demander que le ROLE_USER soit rempli. Ça me permet de restreindre l'espace membre aux utilisateurs connectés.

Question 1 : est-ce que cette démarche est correcte ?

Maintenant je travaille sur une page d'affichage du profil, qui peut être consulté par les personnes en ligne et hors ligne. Etant donné que cette page concerne les utilisateurs, son adresse d'accès est du type : /user/profile/num-prenom.nom

Question 2 : Comment faire pour ajouter une exception en utilisant IS_AUTHENTICATED_ANONYMOUSLY sur les pages de type /user/profile/num-prenom.nom ?

J'ai tout essayé niveau expressions régulières, ça me redirige systématiquement sur le formulaire de connexion (donc c'est le ROLE_USER qui l'emporte).

Merci ! ;)

NB : notez que security: false pourrait marcher en créant un nouveau firewall mais je ne pourrai plus, dans le cas ou l'utilisateur est connecté, personnaliser mon header…

Édité par quentinus95

+0 -0
Auteur du sujet

Le problème n'est pas lié au header mais à l'affichage du contenu de la page. Si j'essaye d'y accéder en étant déconnecté, il m'affiche que je n'ai pas le bon role pour accéder au contenu ou me redirige sur la page de connexion (il ne prend pas en compte l'exception rajoutée dans l'access control).

+0 -0
Auteur du sujet

Non, car ça ne changerait rien (le problème est lié à la présence de variables dans la route à exclure). Il faudrait que je puisses avoir une expression régulière du type /user/profile/(.*) mais ça ne marche pas, ou je ne connais/trouve pas la syntaxe.

Édité par quentinus95

+0 -0

J'avais l'impression qu'il ne s'agissait pas d'expressions régulières, mais ce que j'avais entendu nommé expressions rationnelles. Du coup, je tenterais /user/profile/*.

Édité par Ymox

Evitez qu'on vous dise de les lire : FAQ PHP et Symfony 2Tutoriel WAMP • Cliquez 👍 pour dire merci • Marquez vos sujets résolus

+0 -0
Auteur du sujet

Bonjour !

Merci effectivement après une semaine de tests, je me rend compte que l'ordre compte dans la sécurité :

1
2
    - { path: ^/user/profile/*, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/user, roles: ROLE_USER }

fonctionne

1
2
    - { path: ^/user, roles: ROLE_USER }
    - { path: ^/user/profile/*, roles: IS_AUTHENTICATED_ANONYMOUSLY }

ne fonctionne pas. Merci !

+1 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte