![](/img/trans.png)
[英]Unable to find the controller for path “/login_check” - symfony2
[英]Symfony2 Authentication “login_check” path not found
我是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路由实现控制器。 但是,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”异常的控制器的信息。
示例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 }
我建议您使用FOSUserBundle,因为这似乎是最快的方法: FOSUserBundle
安装非常简单,可以让您在短时间内使您的应用正常工作。 祝好运!
编辑:
您可以发布控制器TestCompanyInternetBundle:Admin:login吗? 您的控制器是否扩展了安全控制器?
您还应该包括您的security.yml。 确保您具有:
firewalls:
login_firewall:
pattern: ^/login$
anonymous: ~
在您的security.yml中。 这是一个常见的陷阱。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.