Symfony 3.3 找不到路径“/login/check”的控制器。路由配置错误
Posted
技术标签:
【中文标题】Symfony 3.3 找不到路径“/login/check”的控制器。路由配置错误【英文标题】:Symfony 3.3 Unable to find the controller for path "/login/check". The route is wrongly configured 【发布时间】:2018-02-08 04:06:04 【问题描述】:我知道已经有人问了一些问题,尽管在检查了 20 倍之后,如果它与其他人的情况不同,我仍然没有解决我的情况。
我已经设置了自己的身份验证侦听器。无论它是否存储令牌(处理时返回 null)我都会收到相同的错误消息。不知道出了什么问题,因为 /login/check 路径位于主防火墙后面,请参阅 security.yml:
login:
pattern: ^/login$
security: false
main:
pattern: ^/
anonymous: ~
zwzt:
provider: in_memory
logout:
path: logout
target: /login
我的 routing.yml 文件:
logout:
path: /logout
login_check:
path: /login/check
有什么想法吗?
根据要求提供一些日志:
[2017-08-30 12:44:39] request.INFO: Matched route "login_check". "route":"login_check","route_parameters":"_route":"login_check","request_uri":"http://localhost/login/check","method":"POST" []
[2017-08-30 12:44:39] security.INFO: Populated the TokenStorage with an anonymous Token. [] []
[2017-08-30 12:44:39] request.WARNING: Unable to look for the controller as the "_controller" parameter is missing. [] []
[2017-08-30 12:44:39] request.ERROR: Uncaught php Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "Unable to find the controller for path "/login/check". The route is wrongly configured." at /var/www/v2/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php line 137 "exception":"[object] (Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException(code: 0): Unable to find the controller for path \"/login/check\". The route is wrongly configured. at /var/www/v2/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php:137)" []
【问题讨论】:
zwzt 应该是防火墙吗? 您能否在尝试登录时显示写入日志文件的内容? @Cerad yes - zwzt 是我的自定义身份验证“处理程序” @xabbuh - 我已将它们添加到问题中 好的。缩进看起来很有趣。这是一个基于警卫的身份验证系统吗?您是否遵循任何特定的指南?你的处理程序被调用了吗? 【参考方案1】:您可能需要为自定义check_path
和logout.path
配置默认_controller
,尽管这永远不会执行。 Symfony 将首先拦截并自动处理注销:
public function logoutAction()
throw new \Exception('This should never be reached!');
check_path
控制器相同,但作为一个技巧,您可以配置与 login_path
相同的路径,而无需再做任何事情。
【讨论】:
已经尝试这样做了,不幸的是我到达了控制器,这是意外的行为。原因是所有侦听器都在分派到控制器之前被调用。如果在事件中没有找到响应,则到达相应的控制器...以上是关于Symfony 3.3 找不到路径“/login/check”的控制器。路由配置错误的主要内容,如果未能解决你的问题,请参考以下文章
找不到路径“/api/login_check”的控制器。路由配置错误
Symfony 3.1:找不到路径“/logout”的控制器
错误:找不到路径“/login_check”的控制器。路由配置错误。 (LexikJWTAuthentication)