登录时找不到“GET /”Symfony 的路由

Posted

技术标签:

【中文标题】登录时找不到“GET /”Symfony 的路由【英文标题】:No route found for "GET /" Symfony on login 【发布时间】:2014-02-23 18:58:26 【问题描述】:

我一直在尝试逐步遵循本教程http://donna-oberes.blogspot.co.uk/2013/09/user-login-and-logout-step-by-step-with.html。当我尝试使用错误的用户名和密码登录时,代码似乎可以正常工作......但是当我输入正确的用户名和密码时,我收到了这个错误。

找不到“GET /”的路由(来自“/app/path/web/app_dev.php/login”)

目前我的文件结构如下所示。

routing_dev.yml

_wdt:
    resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml"
    prefix:   /_wdt

_profiler:
    resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml"
    prefix:   /_profiler

_configurator:
    resource: "@SensioDistributionBundle/Resources/config/routing/webconfigurator.xml"
    prefix:   /_configurator

_main:
    resource: routing.yml



login:
    pattern:   /login
    defaults:   _controller: SimpleProfileBundle:Security:login 

login_check:
    pattern:   /login_check

test_security:
    pattern: /secure_area
    defaults: _controller: SimpleProfileBundle:Security:dumpString 

security.yml

security:
encoders:
    Symfony\Component\Security\Core\User\User: plaintext
    Simple\ProfileBundle\Entity\User:
        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:
    main:
        entity:
            class: Simple\ProfileBundle\Entity\User
            property: username

firewalls:

    secured_area:
        pattern:    ^/
        anonymous: ~
        form_login:
            login_path:  login
            check_path:  login_check
    dev:
        pattern:  ^/(_(profiler|wdt)|css|images|js)/
        security: false

    login:
        pattern:  ^/demo/secured/login$
        security: false

access_control:
      -  path: ^/secure_area, roles: ROLE_ADMIN 

有什么想法吗? 谢谢

【问题讨论】:

symfony 2 No route found for "GET /"的可能重复 【参考方案1】:

我认为错误消息描述了这里的问题。您没有为/ 定义路由。当您尝试使用错误的凭据登录时,您会被重定向到登录(有 一条路由)。但是,如果你成功了,你会被重定向到/。您还没有为根定义路由。

您必须添加如下路线:

index:
    pattern:   /
    defaults:   _controller: YourBundle:IndexController:index 

【讨论】:

谢谢,这对错误进行了排序,但是一旦您登录,它就不会启动到 /secure_area? 不,它没有。但是,您可以更改它重定向到的内容。 documentation 有一节介绍如何配置重定向。 我以前有过这种情况,但仍然无法正常工作?可以在 Skype 上显示吗? (elmbrent118) 您可能应该提出一个新问题来显示您的重定向问题(包括配置)。【参考方案2】:

该错误是由于登录成功后重定向和缺少默认控制器造成的。请查看安全组件documentation。

如文档所述,您可以在成功登录后配置您的目标:

always_use_default_target_path: false
default_target_path:            /
target_path_parameter:          _target_path
use_referer:                    false

【讨论】:

上述答案有效,但登录后会不断重定向回主页,因为它意味着重定向到 /secure_area?有什么想法吗? @BrentFrench 你能发布你的更新配置吗? 你可以加我到Skype,我可以解释一下吗? (elmbrent118)【参考方案3】:

_welcome 添加到app/config/routing_dev.yml

_welcome:
    pattern:  /
    defaults:  _controller: AppBundle:Default:index 

【讨论】:

以上是关于登录时找不到“GET /”Symfony 的路由的主要内容,如果未能解决你的问题,请参考以下文章

Symfony3 找不到“GET /logout”的路由

Symfony2:找不到“GET /lucky/number”的路由

在 Heroku 上部署 Symfony5/php7 应用程序时找不到模板“base.html.twig”错误消息

为啥使用 Origin 标头时找不到路由

为啥通过 PhpUnit 运行测试时找不到我的自定义 TestCase 类?

使用 Laravel 路由时找不到 404 错误