我正在研究Symfony 2.0中的安全性,我遇到了一个无法解释的问题。
我的安全捆绑包现在非常简单。
在尝试提供真正的提供商之前,我尝试将所有工作都放在一边。
所以,现在,当我进入网站时,它会按预期在登录表单上发送给我。我把用户和密码然后,而不是主页,我发送到" /.../ app_dev.php / _wdt / 511509b611682" (每次不同的数字)。
我的用户未在调试工具栏中标记为已通过身份验证。
如果我摘下网址的末尾,我会到达主页。我的用户似乎在调试工具栏中被识别和验证。
这仅在开发环境中到达。在生产环境中,它似乎按预期工作。
感谢您的帮助
答案 0 :(得分:15)
除了@ artworkad的答案之外,您必须在主防火墙之前添加dev
防火墙,否则它将永远不会匹配:
security:
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
#...
答案 1 :(得分: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
答案 2 :(得分:2)
你也可以将这些行放在access_control中:
{ path: ^/_wdt, role: IS_AUTHENTICATED_ANONYMOUSLY }
{ path: ^/_profiler, role: IS_AUTHENTICATED_ANONYMOUSLY }
但我更喜欢将我的access_control仅用于我的应用路由。