0

我在使用 symfony security + fos 用户包时遇到了问题。我找不到任何人复制我的问题,只有类似的问题,但解决方案不起作用。除注册/重置/登录 url 外,包括 / 在内的所有页面都必须受到保护。

当我转到 /login 时,除非我将其添加到我的注册防火墙,否则该 url 是“受保护的”。这一直有效,直到我尝试登录,然后它说我需要将登录路径添加到主防火墙。

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

    registration:
        pattern: ^/(login|register|resetting)
        security: false

    main:
        pattern: ^/
        http_basic: ~
        form_login:
            provider:       fos_userbundle
            csrf_provider:  security.csrf.token_manager
        logout:             true
        anonymous:          true

access_control:
    - { path: ^/(_(profiler|wdt)|css|images|js), role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/, role: ROLE_USER }
4

1 回答 1

0

通过将 ^login 的模式限制为 ^login$ 以使 login_check 仍然传递到主防火墙来修复。

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

    login:
        pattern: ^/login$
        security: false

    registration:
        pattern: ^/(register|resetting)
        security: false

    main:
        pattern: ^/
        http_basic: ~
        form_login:
            provider:       fos_userbundle
            csrf_provider:  security.csrf.token_manager
        logout:             true
        anonymous:          true

access_control:
    - { path: ^/(_(profiler|wdt)|css|images|js), role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/, role: ROLE_USER }
于 2015-09-17T13:43:16.850 回答