防止symfony 2中的用户访问

防止symfony 2中的用户访问,symfony,fosuserbundle,Symfony,Fosuserbundle,我有一个有3个用户角色的网站。 1.管理人员的角色 2.学生的角色 3.家长的角色 从最近几天开始,我面临一个问题。当我以角色\学生的身份登录时,我可以进入角色\家长页面。这只发生在角色\学生/角色\家长而不是角色\管理员 这是我的成功 请告诉我哪里出错了 security: encoders: Bundle\AdminBundle\Entity\KidsKulaUsers: algorithm: sha512 role_hierarchy: #

我有一个有3个用户角色的网站。 1.管理人员的角色 2.学生的角色 3.家长的角色

从最近几天开始,我面临一个问题。当我以角色\学生的身份登录时,我可以进入角色\家长页面。这只发生在角色\学生/角色\家长而不是角色\管理员

这是我的成功

请告诉我哪里出错了

security:
    encoders:
        Bundle\AdminBundle\Entity\KidsKulaUsers:
            algorithm: sha512

role_hierarchy:
#        ROLE_EMPLOYEE:    [ROLE_ADVOCATES]
#        ROLE_RECRUITERS:  [ROLE_EMPLOYER]
    ROLE_SUPER_ADMIN: [ROLE_ADMIN,ROLE_PARENT,ROLE_STUDENT]

providers:
    fos_userbundle:
        id: fos_user.user_provider.username_email
firewalls:
    main:
        pattern:  ^/
        anonymous: ~
        form_login: 
            login_path: /student/login
            provider: fos_userbundle
            csrf_provider: form.csrf_provider
            check_path:    fos_user_security_check
            use_forward:                    false

        logout:
            path:   /logout
            target: /student/login
            #success_handler: security.logout.success_handler
        remember_me: 
            key:      "%secret%"
            lifetime: 31536000 # 365 days in seconds
            path:     /
            domain:   ~ # Defaults to the current domain from $_SERVER    

access_control:
    - { path: /admin/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: /student, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: /student/find-friends, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: /student/search_friends, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: /student/contact, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: /student/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: /student/forgotpassword, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: /reset-password, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: /student/registration, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: /student/auth_registration/, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: /student_activation , roles: IS_AUTHENTICATED_ANONYMOUSLY}
    - { path: /parent, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin, roles: ROLE_ADMIN }
    - { path: ^/student, roles: ROLE_STUDENT }
    - { path: ^/parent, roles: ROLE_PARENT }

查看您的
access\u control
部分:

....
- { path: /parent, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, roles: ROLE_ADMIN }
- { path: ^/student, roles: ROLE_STUDENT }
- { path: ^/parent, roles: ROLE_PARENT }
当学生导航到
/parent
时,Symfony开始检查这些规则。一旦匹配模式,它将检查角色并退出

显然,您的
/parent
路由根本不受保护,因此任何用户(包括学生)都可以访问它


删除第一条规则,事情就会按预期开始工作。

非常感谢。我真的错过了这一点。)