身份验证:app_dev.php / _wdt / 511509b611682而不是主页

时间:2013-02-11 12:32:45

标签: symfony

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

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

在尝试提供真正的提供商之前,我尝试将所有工作都放在一边。

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

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

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

这仅在开发环境中到达。在生产环境中,它似乎按预期工作。

感谢您的帮助

3 个答案:

答案 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仅用于我的应用路由。