登录时找不到“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 的路由的主要内容,如果未能解决你的问题,请参考以下文章
Symfony2:找不到“GET /lucky/number”的路由
在 Heroku 上部署 Symfony5/php7 应用程序时找不到模板“base.html.twig”错误消息