我正在按照Symfony书籍Security chapter中提供的示例,在Symfony中创建登录表单。
我已经在security.yml,routing.yml中创建了必要的配置,并且还实现了我的ControllerAction和Twig模板。
以下是安全性和路由文件的外观: -
security.yml
Firewalls:
# defaut login area for standard users
main:
switch_user: true
context: user
pattern: .*
form_login:
provider: fos_userbundle
login_path: /login
use_forward: false
check_path: /login_check
failure_path: null
logout: true
anonymous: true
的routing.yml
login:
pattern: /{_locale}/login
defaults: { _controller: XYZSiteBundle:SiteUser:login }
login_check:
pattern: /{_locale}/login_check
如您所见,login_path
和check_path
都位于同一防火墙下。
我仍然收到以下错误: -
无法找到路径“/ en / login_check”的控制器。也许您忘了在路由配置中添加匹配的路由?
我做错了什么?
答案 0 :(得分:2)
您的配置设置几乎正常。您的问题与路由有关。您只需将routing.yaml更改为
即可解决此问题在routing.yaml
中登录:
pattern: / login 默认值:{_ console:XYZSiteBundle:SiteUser:login}login_check:
模式: / login_check
因为你的\ login和\ logincheck模式必须与security.yaml模式匹配。您需要删除/ {_ locale} / login和/ {_ locale} / login_check。
希望这会对你有所帮助。
答案 1 :(得分:0)
check_path
部分的form_login
值与/en/login_check
不匹配。
您必须修改它以匹配/.*/login_check
。
答案 2 :(得分:0)
您的login_check路由缺少控制器默认值,应为:
login_check:
pattern: /{_locale}/login_check
defaults: { _controller: XYZSiteBundle:SiteUser:loginCheck }