仅删除注册页面的访问控制 - symfony2

时间:2014-01-04 08:26:38

标签: php symfony access-control

security.yml 中的访问控制字段类似于

access_control:
        - { path: ^/, roles: ROLE_ADMIN }

这意味着我想控制应用中每个页面的访问权限。所以,如果有人试图访问

http://localhost/example/web/app_dev.php/

将被重定向到登录页面。但我的注册页面也在那里。登录页面包含一个注册按钮。因此,当我将某人重定向到注册页面时,它会触发访问控制并重定向到同一个登录页面。这意味着

http://localhost/example/web/app_dev.php/signup

无法访问。

如何允许用户仅访问注册页面而不访问任何其他页面?

1 个答案:

答案 0 :(得分:1)

尝试使用排除模式,例如(?!exclude)

access_control:
    - { path: ^/(?!signup), roles: ROLE_ADMIN }

但是对于symfony2,注册页面必须在防火墙配置中排除:

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

    secured_area:
        pattern: ^/(?!signup)
        anonymous: false
        form_login:
            always_use_default_target_path: true
            default_target_path: /
            check_path: /auth_check
            login_path: /signup/
        logout:
            path:   /logout
            target: /signup/

access_control:
    - { path: ^/, roles: ROLE_ADMIN }
相关问题