php - Symfony2 身份验证 "login_check"路径未找到

标签 php security symfony

我是 Symfony2 的新手,我正在尝试创建一个基本的注册+登录系统。因此,在 Symfony2 文档的帮助下,我创建了这个 security.yml:

security:
    encoders:
        TestCompany\InternetBundle\Entity\Member:
            algorithm:        sha1
            encode_as_base64: false
            iterations:       1

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

    providers:
        administrators:
            entity: { class: TestCompanyInternetBundle:Member, property: username }

    firewalls:
        admin_area:
            pattern:    ^/admin
            anonymous: ~
            form_login:
                login_path:  /login
                check_path:  /login_check

    access_control:
        - { path: ^/admin, roles: ROLE_ADMIN }

我使用了这个路由:

login_check:
    pattern:   /login_check
login:
    pattern:  /login
    defaults: { _controller: TestCompanyInternetBundle:Admin:login }

根据http://symfony.com/doc/current/book/security.html#using-a-traditional-login-form我不需要为 login_check 路由实现 Controller 。然而,Symfony 向我返回了这个错误:

Unable to find the controller for path "/login_check". Maybe you forgot to add the matching route in your routing configuration?

你看到我在这里做错了什么吗?登录页面几乎是文档中使用的页面的精确副本。错误发生在页面:http://localhost/SymfonyTest/web/app_dev.php/login_check,这是我使用登录表单后发送到的页面。

最佳答案

http://symfony.com/doc/current/book/security.html#using-a-traditional-login-form

确保/login_check位于防火墙后面。

因此,在您的示例中,您为安全区域指定了/admin 前缀,因此您的登录检查路由也应该具有该前缀,例如/admin/login_check

接下来,确保您的 check_path URL(例如/login_check)位于用于表单登录的防火墙后面(在此示例中,单个防火墙匹配所有 URL,包括/login_check)。如果/login_check 与任何防火墙都不匹配,您将收到“无法找到路径“/login_check”的 Controller ”异常。

security.yml 配置示例:

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

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

    ....

    access_control:
        - { path: ^/admin, roles: ROLE_ADMIN }

关于php - Symfony2 身份验证 "login_check"路径未找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10866123/

相关文章:

php - 使用输入字段将小时和分钟添加到日期时间?

php - 如何解决 DOMDocument 的缩进问题?

security - MongoDB:使用文档 ID "in public"是否安全?

php - 如何将参数传递给 Symfony2 中的验证约束 - 在 yml 中

mysql - 从现有数据库生成具有点类型属性的实体

php - 从 SQL 数据库中排序类别列表中的一组子类别

php - 如何通过 php 和 MySQL 创建 xml 文件

security - 在像MD5这样的哈希上使用暴力破解有什么大不了的

security - JWT 是用户身份验证的安全选项吗?

php - Symfony 2.4 在 TWIG 中渲染 Controller 抛出 "Rendering a fragment can only be done when handling a Request."异常