5

我无法在 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,如果这有什么不同的话。

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

安全.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}

路由.yml

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

common_login_check:
    pattern: /login_check
4

1 回答 1

11

login_check路径需要在您的安全区域内。

在您的代码中,Pattern 定义了“/secured”前缀,因此您的 login_check 也需要以“/secured”作为前缀。

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

我认为您也应该将其从 login_firewall 中删除。

于 2012-12-21T22:00:49.187 回答