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

Ata*_*CSE 4 php authentication login symfony

我知道这是一个常见的问题.关于这个主题的几个问题已经发布.我已经尝试过在这些问题中推荐的所有解决方案,但都没有效果.

我发现如果我把我form_login放在后面就会出现这个问题firewall.但我在防火墙中没有任何额外的层,所以路径应该很简单,如文档中所述.

我的security.yml

# app/config/security.yml
security:
    encoders:
        Joy\JoyBundle\Entity\User:
            algorithm:        sha512
            encode_as_base64: true
            iterations:       1

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

    providers:
        administrators:
            entity: { class: JoyBundle:User, property: username }

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

        login:
            pattern:  ^/login
            security: false

        secured_area:
            pattern: ^/
            anonymous: ~
            form_login:
                login_path: login
                check_path: login_check
            logout:
                path:   /logout
                target: /login

    access_control:
        - { path: ^/signup, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/, roles: ROLE_ADMIN }
Run Code Online (Sandbox Code Playgroud)

我的routing.yml inapp/config

# app/config/routing.yml
login:
    path: /login
    defaults: { _controller: JoyBundle:Security:login }

login_check:
    path: /login_check

joy_hello:
    resource: "@JoyBundle/Resources/config/routing.yml"
    prefix: /
Run Code Online (Sandbox Code Playgroud)

所以我在访问时执行登录检查app_dev.php/但是在登录表单中按提交后显示错误.

无法找到路径"/ login_check"的控制器.也许您忘了在路由配置中添加匹配路由?找不到404 - NotFoundHttpException

我试过了

login_path: /login
check_path: /login_check
Run Code Online (Sandbox Code Playgroud)

没工作.我错过了什么?请帮忙.....

ant*_*ony 6

路由login_check不在防火墙后面,因为login_check路由模式与login没有安全性的防火墙匹配.

login:
    pattern:  ^/login     # This matches /login_check
    security: false
Run Code Online (Sandbox Code Playgroud)

解决方案1:将其更改为

login:
    pattern:  ^/login$
    security: false
Run Code Online (Sandbox Code Playgroud)

解决方案2:login完全删除防火墙并添加此规则access_control

access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
Run Code Online (Sandbox Code Playgroud)