繁体   English   中英

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

[英]Unable to find the controller for path “/login_check” - symfony2

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

我发现如果我将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 }

我在app/config routing.yml

# 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: /

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

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

我试过了

login_path: /login
check_path: /login_check

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

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

login:
    pattern:  ^/login     # This matches /login_check
    security: false

解决方案1:将其更改为

login:
    pattern:  ^/login$
    security: false

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

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

security.yml中尝试在secured_area部分设置提供程序:

secured_area:
    provider: administrators
    pattern: ^/
    anonymous: ~

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM