Symfony2和匿名防火墙

时间:2017-02-01 13:15:54

标签: php symfony firewall

我有一个运行Symfony2的站点需要登录。 这样的防火墙设置如下:

firewalls:
    dev:
        pattern:  ^/(_(profiler|wdt)|css|images|js)/
        security: false
    admin:
        pattern:    ^/
        entry_point: security_user.authentication.entry_point
        ntlm: ~
        fr3d_ldap:  ~
        form_login:
            check_path: /login_check
            login_path: /login
            #always_use_default_target_path: true
            use_referer: true
            success_handler: security_user.login.success_handler
            default_target_path: /
        logout:
            path:   /logout
            target: /
            success_handler: security_user.logout.handler
            invalidate_session: true
        anonymous:  ~

我想在不登录的情况下打开特定页面的访问权限。 我尝试添加firewal:

    my_firewall:
        context: my_context
        pattern: ^/url-to-open.*$
        anonymous: true

但我仍然会被重定向到登录页面。 我错过了什么? 感谢

1 个答案:

答案 0 :(得分:1)

您不需要新的防火墙,只需设置access_control即可。 在下面的例子中,未经身份验证的用户可以访问路径包含“/ some_path”表达式的所有路由。你应该有关于SecurityHow access_controll works

的Symfony doc
firewalls:
    dev:
        pattern:  ^/(_(profiler|wdt)|css|images|js)/
        security: false
    admin:
        pattern:    ^/
        entry_point: security_user.authentication.entry_point
        ntlm: ~
        fr3d_ldap:  ~
        form_login:
            check_path: /login_check
            login_path: /login
            #always_use_default_target_path: true
            use_referer: true
            success_handler: security_user.login.success_handler
            default_target_path: /
        logout:
            path:   /logout
            target: /
            success_handler: security_user.logout.handler
            invalidate_session: true
        anonymous:  ~

access_control:
        - { path: /some_path, role: IS_AUTHENTICATED_ANONYMOUSLY }