Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security Symfony2中防火墙后面的所有URL_Security_Symfony_Firewall - Fatal编程技术网

Security Symfony2中防火墙后面的所有URL

Security Symfony2中防火墙后面的所有URL,security,symfony,firewall,Security,Symfony,Firewall,我正在创建一个仅限用户使用的应用程序。因此,您必须登录才能访问任何url 目前,我有以下几点: firewalls: main: pattern: ^/ form_login: provider: fos_userbundle csrf_provider: form.csrf_provider logout: true anonymous: true

我正在创建一个仅限用户使用的应用程序。因此,您必须登录才能访问任何url

目前,我有以下几点:

firewalls:
    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
            csrf_provider: form.csrf_provider

        logout:       true
        anonymous:    true

    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false

    default:
        anonymous: ~

access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/, role: IS_AUTHENTICATED }
    - { path: ^/admin/, role: ROLE_ADMIN }

但是当我登录时,我被安全检查卡住了。将我的所有URL置于防火墙后的最佳方式是什么?

symfony中的acl系统作为上层覆盖下层acl

检查ACE的顺序很重要。一般来说,您应该在开始处放置更具体的条目

因此:

或包含您的参数的完整fos用户文件:

security:
    encoders:
        FOS\UserBundle\Model\UserInterface: sha512

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username_email

    firewalls:
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_provider: form.csrf_provider
                remember_me: true
            logout:       true
            anonymous:    true

    access_control: #Top override bottom, change order with CAUTION

        ## Admin Rule
        - { path: ^/admin, role: ROLE_ADMIN }

        ## Anonymous FOS User Rules
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }

        ## Block All Website to anonymous user
        - { path: ^/, roles: ROLE_USER }

您在防火墙中为
登录路径
检查路径
设置了什么?应将
/admin/
的条目放在
/
的条目之前,因为访问控制规则列表将被评估,直到找到第一个匹配项。添加了我的防火墙路由
security:
    encoders:
        FOS\UserBundle\Model\UserInterface: sha512

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username_email

    firewalls:
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_provider: form.csrf_provider
                remember_me: true
            logout:       true
            anonymous:    true

    access_control: #Top override bottom, change order with CAUTION

        ## Admin Rule
        - { path: ^/admin, role: ROLE_ADMIN }

        ## Anonymous FOS User Rules
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }

        ## Block All Website to anonymous user
        - { path: ^/, roles: ROLE_USER }