Symfony2 security.yml配置正确

时间:2016-04-02 07:36:25

标签: symfony

我是symfony2 3.0的新手,我试图创建一个登录表单。但是我陷入了security.yml配置,我不知道发生了什么。我一直在谷歌搜索3个小时,但没有运气。希望您能够帮助我。到目前为止,这是我的代码。

security:
  encoders:
    AppBundle\Entity\User:
      algorithm: bcrypt

  providers:
    db_provider:
      entity:
        class: AppBundle:User
        property: username

  firewalls:
    login_area:
      pattern: ^/user/login$
      security: false

    secured_area:
      pattern: ^/admin
      anonymous: ~
      form_login:
        login_path: user/login
        check_path: user/login-check
        always_use_default_target_path: true
        default_target_path: /admin
        provider: db_provider

每次我去http://localhost:8000/admin它都会给我这个错误

The check_path "user/login-check" for login method "form_login" is not matched by the firewall pattern "^/admin".


Invalid configuration for path "security.firewalls.secured_area": The check_path "user/login-check" for login method "form_login" is not matched by the firewall pattern "^/admin".

1 个答案:

答案 0 :(得分:0)

您的login_check路径必须由其中一个防火墙覆盖。

firewalls:
    login_area:
       pattern: ^/admin/user/login$
       security: false

    secured_area:
        pattern: ^/admin
        anonymous: ~
        form_login:
            login_path: /admin/user/login
            check_path: /admin/user/login-check
            always_use_default_target_path: true
            default_target_path: /admin
            provider: db_provider

access_control:
    - { path: ^/admin/user/login, role: IS_AUTHENTICATED_ANONYMOUSLY }

来自symfony.com docs的注释:

  

确保您的check_path网址(例如/ login)位于后面   你用于表单登录的防火墙(在这个例子中,单个   防火墙匹配所有URL,包括/ login)。如果/ login不匹配   任何防火墙,你都会收到一个无法找到控制器的路径   “/ login”例外。