Précédent   Forum du club des développeurs et IT Pro > PHP > Bibliothèques et frameworks > Symfony2
Symfony2 Forum d'entraide sur le framework PHP Symfony2.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 24/02/2013, 10h06   #1
symfony_dev
Nouveau Membre du Club
 
Inscription : février 2012
Messages : 64
Détails du profil
Informations forums :
Inscription : février 2012
Messages : 64
Points : 31
Points : 31
Par défaut firewalls zones membre et admin

Bonjour,

J'ai besoin de conseils pour la configuration du/des firewalls. Je voudrais mettre en place un firewall pour la zone admin genre mondomaine.com/admin, jusque là, tout va bien.

Là où ça se gâte, c'est pour la zone membremondomaine.com/membre. Je ne vois pas trop comment configurer fosuserbundle pour gerer ces deux zones.

Code :
1
2
3
4
 
    role_hierarchy:
        ROLE_MEMBER:  [ ROLE_USER, ROLE_MEMBER ]
        ROLE_ADMIN:   [  ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH ]
Code :
1
2
3
4
5
6
7
8
9
 
firewalls:
        main:
            pattern: ^/
            form_login:
                provider: chain_provider
                csrf_provider: form.csrf_provider
            logout:       true
            anonymous:    true
Je voudrait qu'il y ai des urls du genre:
mondomaine.com/admin/login redirigée vers mondomaine.com/admin/

et mondomaine.com/member/login ou mondomaine.com/login redirigée vers mondomaine.com/

Merci pour votre aide
symfony_dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2013, 12h28   #2
symfony_dev
Nouveau Membre du Club
 
Inscription : février 2012
Messages : 64
Détails du profil
Informations forums :
Inscription : février 2012
Messages : 64
Points : 31
Points : 31
J'aimerais comprendre pourquoi une personne à jugé que cette discussion est "médiocre", un commentaire constructif aurait été le bienvenue.
symfony_dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2013, 13h40   #3
stephan.78
Membre expérimenté
 
Homme Stéphan
Technicien maintenance
Inscription : août 2011
Messages : 376
Détails du profil
Informations personnelles :
Nom : Homme Stéphan
Âge : 43
Localisation : France

Informations professionnelles :
Activité : Technicien maintenance
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : août 2011
Messages : 376
Points : 565
Points : 565
Désolé utilisation du tel sur le site et hop mauvaise appui
stephan.78 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2013, 13h51   #4
symfony_dev
Nouveau Membre du Club
 
Inscription : février 2012
Messages : 64
Détails du profil
Informations forums :
Inscription : février 2012
Messages : 64
Points : 31
Points : 31
ah ok, ca me rassure
symfony_dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2013, 17h11   #5
stephan.78
Membre expérimenté
 
Homme Stéphan
Technicien maintenance
Inscription : août 2011
Messages : 376
Détails du profil
Informations personnelles :
Nom : Homme Stéphan
Âge : 43
Localisation : France

Informations professionnelles :
Activité : Technicien maintenance
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : août 2011
Messages : 376
Points : 565
Points : 565
Donc on va, je pense, faire du message dans cette partie
Code :
1
2
3
4
 
role_hierarchy:
        ROLE_MEMBER: [ ROLE_USER]
        ROLE_ADMIN:   [ ROLE_MEMBER , ROLE_ALLOWED_TO_SWITCH ]
La raison est simple : dans ROLE_MEMBER tu dis quand tu as ROLE_MEMBER, tu a le ROLE_MEMBER et le ROLE_USER. Pareil pour admin.

Pourquoi deux login avec deux redirections ?

Je pense qu'il faut deux firewalls.

Peux tu mettre tout le security.yml
stephan.78 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2013, 08h50   #6
fatbob
Membre habitué
 
Inscription : novembre 2008
Messages : 185
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 185
Points : 115
Points : 115
Salut,
Je ne comprends pas trop l'objectif poursuivi. Comment savoir a priori que l'utilisateur doit être envoyé vers une page de login ou une autre ?

Autant que j'ai compris le fonctionnement de la sécurité dans SF, un firewall définit d'abord et avant tout une méthode d'authentification. On y précise la zone protégée mais si la méthode d'authentification est la même pour les MEMBER et les ADMIN, on n'a besoin que d'un seul firewall.
La mise en place des profils nécessaires pour accéder à des sous-zones est plutôt du ressort du paragraphe "access_control" que ce celui des firewall.

Tel que je vois le truc, j'imagine un utilisateur qui tente d'accéder à une URL quelconque. Si cette URL est protégée par le firewall, il est dirigé vers une page de login.
En fonction de ce qui est définit, il se voit attribuer un ou plusieurs rôles qui lui donnent accès ou non à l'URL désirée. Cet accès étant autorisé par le paramétrage de "access_control"
fatbob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2013, 11h02   #7
symfony_dev
Nouveau Membre du Club
 
Inscription : février 2012
Messages : 64
Détails du profil
Informations forums :
Inscription : février 2012
Messages : 64
Points : 31
Points : 31
Bonjour,

voici le security.yml
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 
jms_security_extra:
    secure_all_services: false
    expressions: true
 
security:
    encoders:
        Symfony\Component\Security\Core\User\User: plaintext
        FOS\UserBundle\Model\UserInterface: sha512
 
    role_hierarchy:
        ROLE_MEMBER:   ROLE_MEMBER 
        ROLE_ADMIN:   [  ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH ]
 
    providers:
        chain_provider:
            chain:
                providers: [in_memory, fos_userbundle]
        fos_userbundle:
            id: fos_user.user_provider.username_email
        in_memory:
            memory:
                users:
                    admin: { password: admin, roles: [ 'ROLE_ADMIN' ] }
                    member: { password: member, roles: [ 'ROLE_MEMBER' ] }
 
    firewalls:
        main:
            pattern: ^/
            form_login:
                provider: chain_provider
                csrf_provider: form.csrf_provider
#                default_target_path: /admin/
            logout:       true
            anonymous:    true
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false
 
#        login:
#            pattern:  ^/demo/secured/login$
#            security: false
#
#        secured_area:
#            pattern:    ^/demo/secured/
#            form_login:
#                check_path: /demo/secured/login_check
#                login_path: /demo/secured/login
#            logout:
#                path:   /demo/secured/logout
#                target: /demo/
#            #anonymous: ~
#            #http_basic:
#            #    realm: "Secured Demo Area"
 
    access_control:
        #- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
        #
        # You must uncomment the two following rules to restrict access to paths
        # starting with the /_internal prefix to only localhost
        #- { path: ^/_internal/secure, roles: IS_AUTHENTICATED_ANONYMOUSLY, ip: 127.0.0.1 }
        #- { path: ^/_internal/secure, roles: ROLE_NO_ACCESS }
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin, role: ROLE_ADMIN }
        - { path: ^/member, role: ROLE_MEMBER }
        - { path: ^/, role: IS_AUTHENTICATED_ANONYMOUSLY }
Merci.
symfony_dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2013, 11h18   #8
symfony_dev
Nouveau Membre du Club
 
Inscription : février 2012
Messages : 64
Détails du profil
Informations forums :
Inscription : février 2012
Messages : 64
Points : 31
Points : 31
C'est que si je vais sur mondomaine.com/login
en me connectant avec un utilisateur membre, je suis redirigé vers mondomaine.com
en me connectant avec un utilisateur admin, je suis redirigé vers mondomaine.com/admin/

pour ce qui est des "best practice", c'est correct de fonctionner ainsi(avec le meme formulaire de login pour les membres et admin) ?
symfony_dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2013, 12h04   #9
stephan.78
Membre expérimenté
 
Homme Stéphan
Technicien maintenance
Inscription : août 2011
Messages : 376
Détails du profil
Informations personnelles :
Nom : Homme Stéphan
Âge : 43
Localisation : France

Informations professionnelles :
Activité : Technicien maintenance
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : août 2011
Messages : 376
Points : 565
Points : 565
Bon on va commencer par un petit peu de ménage.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
jms_security_extra:
    secure_all_services: false
    expressions: true
 
security:
    encoders:
        Symfony\Component\Security\Core\User\User: plaintext
        FOS\UserBundle\Model\UserInterface: sha512
 
    role_hierarchy:
        ROLE_MEMBER:   ROLE_USER
        ROLE_ADMIN:   [  ROLE_MEMBER, ROLE_ALLOWED_TO_SWITCH ]
 
    providers:
        chain_provider:
            chain:
                providers: [in_memory, fos_userbundle]
        fos_userbundle:
            id: fos_user.user_provider.username_email
        in_memory:
            memory:
                users:
                    admin: { password: admin, roles: [ 'ROLE_ADMIN' ] }
                    member: { password: member, roles: [ 'ROLE_MEMBER' ] }
 
    firewalls:
        main:
            pattern: ^/
            form_login:
                provider: chain_provider
                csrf_provider: form.csrf_provider
#                default_target_path: /admin/
            logout:       true
            anonymous:    true
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false

    access_control:
        - { path: ^/, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin, role: ROLE_ADMIN }
        - { path: ^/member, role: ROLE_MEMBER }
Déjà on y verra plus clair, et sur le fond rien ne t'empêche d’authentifier sur le form login, les admin et les member étant que chacun à sa zone.
stephan.78 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2013, 12h05   #10
fatbob
Membre habitué
 
Inscription : novembre 2008
Messages : 185
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 185
Points : 115
Points : 115
Pour ce qui est des best practice... Je ne sais pas ce qui est préconisé. Je suis comme toi avec mes avirons pour essayer de maîtriser la sécurité personnalisée de symfony qui, si elle est souple et puissante, n'est pas simple.

Par contre, je ne vois pas pourquoi les membres et les admins n'auraient pas le même écran de login dans la mesure où tu ne peux pas déterminer à l'avance si un utilisateur qui arrive sur le site sera reconnu comme admin ou comme membre. C'est seulement une fois authentifié par la méthode choisie que tu vas choisir de le rediriger vers une url ou une autre.
Parce que si un utilisateur non identifié arrive sur ton site, comment choisir sur quel écran de login l'envoyer ?

2ème remarque : tes utilisateurs admin et member ne sont pas gérés par FOS (provider in_memory) ? Y a-t-il une raison particulière pour cela ?
fatbob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2013, 14h35   #11
stephan.78
Membre expérimenté
 
Homme Stéphan
Technicien maintenance
Inscription : août 2011
Messages : 376
Détails du profil
Informations personnelles :
Nom : Homme Stéphan
Âge : 43
Localisation : France

Informations professionnelles :
Activité : Technicien maintenance
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : août 2011
Messages : 376
Points : 565
Points : 565
Je pense que d'avoir laissé in_memory dans le chain provider permet d'avoir accès à deux utilisateurs lambda.

Après reste la possibilité de deux firewalls un pour les admins et un pour les utilisateurs et donc deux liens login.
stephan.78 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2013, 14h57   #12
fatbob
Membre habitué
 
Inscription : novembre 2008
Messages : 185
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 185
Points : 115
Points : 115
Citation:
Envoyé par stephan.78 Voir le message
Je pense que d'avoir laissé in_memory dans le chain provider permet d'avoir accès à deux utilisateurs lambda.
Admettons... On peut imaginer que dans certaines situations, cela soit nécessaire.
Citation:
Après reste la possibilité de deux firewalls un pour les admins et un pour les utilisateurs et donc deux liens login.
Là, je vois moins bien. Comment choisir celui vers lequel on veut envoyer l'utilisateur ?
Pour moi, deux firewall, ça peut servir si on a deux applis dans la même arborescence avec des systèmes d'authentification différents. En dehors de ça, j'ai du mal à imaginer des cas d'utilisation concrets pour lesquels cette configuration est nécessaire.
fatbob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2013, 10h59   #13
symfony_dev
Nouveau Membre du Club
 
Inscription : février 2012
Messages : 64
Détails du profil
Informations forums :
Inscription : février 2012
Messages : 64
Points : 31
Points : 31
Bonjour,

Oui, in_memory me sert pour avoir des utilisateurs lambda.

Avec cette configuration, cela semble fonctionner.
symfony_dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2013, 22h21   #14
stephan.78
Membre expérimenté
 
Homme Stéphan
Technicien maintenance
Inscription : août 2011
Messages : 376
Détails du profil
Informations personnelles :
Nom : Homme Stéphan
Âge : 43
Localisation : France

Informations professionnelles :
Activité : Technicien maintenance
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : août 2011
Messages : 376
Points : 565
Points : 565
Pour ceux que ça intéresse, je suis tombé la dessus

http://benjamin.leveque.me/symfony2-...-son-role.html
stephan.78 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2013, 09h28   #15
symfony_dev
Nouveau Membre du Club
 
Inscription : février 2012
Messages : 64
Détails du profil
Informations forums :
Inscription : février 2012
Messages : 64
Points : 31
Points : 31
Super ! Merci !
symfony_dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 21h21.


 
 
 
 
Partenaires

Hébergement Web