0

我正在尝试在 Symfony 中启动和运行非常基本的安全性。我的security.yml文件中有以下代码段。

firewalls:
    secured_area:
        pattern:    ^/
        form_login:
            check_path: /login_check
            login_path: /login
        logout:
            path:   /logout
            target: /
        anonymous: ~
        #http_basic:
        #    realm: "Secured Demo Area"

access_control:
    - { path: ^/new, roles: ROLE_USER }
    - { path: ^/create, roles: ROLE_USER }

但是,我仍然可以访问以下 URL:http://events.local/app_dev.php/event/new 而无需经过身份验证。任何想法为什么会发生这种情况?

4

1 回答 1

1

^/new不匹配/event/new,因为^表明/new必须是路径的开头。

试试看^/event/new,我想你的问题会解决的。

来自http://symfony.com/doc/current/book/security.html

在路径前加上 ^ 可确保仅匹配以该模式开头的 URL。例如,简单的 /admin 路径(没有 ^)可以正确匹配 /admin/foo,但也可以匹配 /foo/admin 之类的 URL。

于 2013-08-05T22:20:31.410 回答