fal*_*sch 13 php symfony symfony-2.1
我使用symfony.com 的"使用传统登录表单"教程来验证我的用户身份.使用简单的http auth,它可以很好地工作.
提交登录后,我得到以下异常:
无法找到路径"/ login_check"的控制器.也许您忘了在路由配置中添加匹配路由?
好吧,在教程中我读到:
您不需要为/ login_check URL实现控制器,因为防火墙将自动捕获并处理提交到此URL的任何表单.
我定义了路由并设置了防火墙设置:
security.yml
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
backend:
pattern: ^/backend
anonymous: ~
form_login:
provider: entity
login_path: /login
check_path: /login_check
#use_forward: true
logout:
path: /logout
target: /
Run Code Online (Sandbox Code Playgroud)
使用routing.yml
login:
pattern: /login
defaults: { _controller: VitaSecurityBundle:Default:login }
login_check:
pattern: /login_check
logout:
pattern: /logout
Run Code Online (Sandbox Code Playgroud)
Żab*_*jad 18
您遇到的问题在这里描述:
请参阅http://symfony.com/doc/current/book/security.html,"避免常见陷阱"部分
- 确保
/login_check在防火墙后面接下来,确保您的check_path URL(例如/ login_check)位于您用于表单登录的防火墙后面(在此示例中,单个防火墙匹配所有URL,包括/ login_check).如果/ login_check与任何防火墙都不匹配,您将收到无法找到路径"/ login_check"异常的控制器.
在此示例中,您的模式为安全路径指定/ backend的前缀.要运行,您的登录检查应该在同一个防火墙后面.
因此,要匹配您在防火墙中指定的模式,请将login_check放在url路径上,如下所示:/ backend/login_check
我将/ backend前缀添加到我的路径中,删除了'anonymous:〜'行并注释掉后端的ACL.
security.yml
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
login_firewall:
pattern: ^/backend/login$
anonymous: ~
backend:
pattern: ^/backend
form_login:
provider: entity
login_path: /backend/login
check_path: /backend/login_check
#use_forward: true
logout:
path: /backend/logout
target: /
access_control:
#- { path: ^/backend, roles: ROLE_USER }
Run Code Online (Sandbox Code Playgroud)
使用routing.yml
login:
pattern: /backend/login
defaults: { _controller: VitaSecurityBundle:Default:login }
login_check:
pattern: /backend/login_check
logout:
pattern: /backend/logout
Run Code Online (Sandbox Code Playgroud)