7

我正在研究 Symfony 2.0 中的安全性,但我遇到了一个无法解释的问题。

我的安全包现在非常简单。

在放置真正的提供者之前,我尝试让一切正常工作。

所以,现在,当我访问网站时,它会按预期向我发送登录表单。我输入用户名和密码,然后,而不是主页,我发送到“/.../app_dev.php/_wdt/511509b611682”(每次不同的数字)。

我的用户未在调试工具栏中标记为已通过身份验证。

如果我去掉网址的末尾,我会到达主页。我的用户似乎在调试工具栏中被识别和验证。

这仅在开发环境中出现。在 prod 环境中,它似乎按预期工作。

谢谢你的帮助

4

3 回答 3

15

除了@artworkad 的回答,您必须在主dev防火墙之前添加防火墙,否则它永远不会匹配:

security:
    firewalls:
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            pattern: ^/
            #...
于 2013-05-31T14:10:17.047 回答
4

当您使用开发环境登录时,您将被重定向到index_dev.php/_wdt/4e95412bc6871.

WDT aka web 调试工具栏可以通过以下方式从防火墙范围中删除

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

实际上它与 SecurityBundle 无关,无论如何它都记录在这里https://github.com/FriendsOfSymfony/FOSUserBundle/issues/368

于 2013-02-11T17:55:47.280 回答
2

您也可以将这些行放在 access_control 中:

{ path: ^/_wdt, role: IS_AUTHENTICATED_ANONYMOUSLY }
{ path: ^/_profiler, role: IS_AUTHENTICATED_ANONYMOUSLY }

但我更喜欢只为我的应用程序路线保留我的 access_control。

于 2013-05-09T15:32:49.873 回答