无法找到路径"/ login_check"的控制器

Jos*_*ter 5 php symfony symfony-2.1

我无法在symfony上进行用户身份验证.我login_path工作正常,但check_path发生故障.我指定的路径让人着名Unable to find the controller for path "/login_check". Maybe you forgot to add the matching route in your routing configuration?

我看了看其他帖子,他们似乎都在做我正在做的事情.我对symfony很新,并且难以理解这些概念,所以我非常感谢一些帮助.

我正在使用Symfony 2.1,如果这有所作为.

我相信我已经正确配置了所有内容:

security.yml

security:
    encoders:
        Symfony\Component\Security\Core\User\User: plaintext
        Site\CommonBundle\Entity\User: plaintext

    role_hierarchy:
        ROLE_LIGHT:       ROLE_LIGHT
        ROLE_ADMIN:       [ROLE_LIGHT, ROLE_USER]
        ROLE_SUPER_ADMIN: [ROLE_LIGHT, ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

    providers:
        database:
            entity: { class: SiteCommonBundle:User }

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

        login_firewall:
            pattern:  ^/(login|logout|login_check)
            anonymous: ~

        secured:
            pattern: ^/secured/
            form_login:
                login_path: /login
                check_path: /login_check
            logout:
                path: /logout
                target: /


    access_control:
        - { path: ^/secured/, roles:ROLE_LIGHT }
        - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY}
Run Code Online (Sandbox Code Playgroud)

使用routing.yml

common_login:
    pattern:  /login
    defaults: { _controller: SiteCommonBundle:Default:login }

common_login_check:
    pattern: /login_check
Run Code Online (Sandbox Code Playgroud)

l3l*_*3l0 11

login_check路径必须是你的安全区域之内.

在你的代码中,Pattern定义了一个前缀'/ secured',所以你的login_check也需要以'/ secured'为前缀.

在您的情况下,安全防火墙定义所有路径都以前缀开头,/secured但登录检查路径的路径是/login_check.因此防火墙无法处理表单.

我认为你也应该从login_firewall中删除它.