如何为Symfony 7.1应用生成login_check路由?
解决Symfony 7.1中login_check路由不存在的问题
你遇到的模板渲染错误是因为Security组件无法找到login_check对应的路由,实际上Symfony不会自动生成名为login_check的实体路由,它是由Security组件内部处理的虚拟端点,只需调整配置即可解决:
修正security.yaml配置
核心问题是form_login.check_path的配置方式,以下两种方案任选其一:
方案1:复用已存在的app_login路由
你的路由列表里已经有app_login(路径/login,允许ANY方法),直接把check_path指向这个路由即可:
firewalls: main: # ... 其他原有配置 form_login: login_path: app_login check_path: app_login # 改为已存在的路由名称 default_target_path: event_list username_parameter: _email password_parameter: _password
方案2:直接使用路径而非路由名称
如果想保留login_check的标识,直接用路径/login_check,无需手动定义路由,Security组件会自动拦截该路径的POST请求:
firewalls: main: # ... 其他原有配置 form_login: login_path: app_login check_path: /login_check # 直接使用路径 default_target_path: event_list username_parameter: _email password_parameter: _password
调整登录表单的action属性
根据你选择的方案,修改登录模板中的表单提交地址:
- 方案1对应:
<form action="{{ path('app_login') }}" method="post"> - 方案2对应:
<form action="/login_check" method="post">
最后生效步骤
修改配置后清除缓存,确保配置生效:
php ./bin/console cache:clear
内容的提问来源于stack exchange,提问作者k0pernikus
相关产品推荐
相关产品推荐

