0

我想通过使用 FOSUserBundle 登录来保护整个站点。我尝试像这样设置 security.yml:

 firewalls:
   login:
        pattern: ^/login
        anonymous: ~
        form_login:
            provider: fos_userbundle
            csrf_provider: form.csrf_provider

   main:
        pattern: ^/ 
        form_login:
            provider: fos_userbundle
            csrf_provider: form.csrf_provider

但是后来我不知道在 config.yml 中设置什么

fos_user:
    db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel'
    firewall_name: main
    user_class: My\UserBundle\Entity\User

无论我尝试什么,我都无法登录,或者仍然出现以下错误:

您必须在安全防火墙配置中使用 form_login 配置要由防火墙处理的检查路径。

编辑:这里的第二个响应似乎有效: Symfony 2 - 防火墙和访问控制问题

4

1 回答 1

1

您的登录防火墙意外需要login_check驻留在主防火墙中。除了登录防火墙中的一件事外,您无需更改配置中的任何内容:

firewalls:
    login:
        pattern: ^/login$

如果您没有注意到,末尾有一个 $,它确保只有路径/login匹配,但不匹配/login_check.

@Patt 建议的 access_control 和更改不是必需的。

于 2013-02-10T11:32:39.677 回答