Symfony 6.3.1集成JWT后login_check路由无法访问求助
Symfony 6.3.1集成JWT后login_check路由404问题排查方案
按以下步骤逐一排查:
1. 确认路由是否已注册
先执行命令查看系统所有已注册的路由:
php bin/console debug:router
如果输出里找不到api_login_check,说明路由未正确加载:
- 检查
routes.yaml的位置是否在config/根目录(Symfony 6默认配置),或当前环境的config/routes/子目录下; - 将
api_login_check的定义移到controllers路由规则之前——Symfony路由按定义顺序匹配,若前面的注解路由意外匹配了/api/login_check,会导致自定义路由失效。
2. 修正JWT配置文件拼写错误
你的JWT配置文件名是lexit_jwt_authentication.yaml,正确名称应为lexik_jwt_authentication.yaml(末尾少了字母k)。文件名错误会导致LexikJWTAuthenticationBundle无法加载配置,虽不直接引发路由404,但会破坏后续认证逻辑,必须修正。
3. 确保请求方式为POST
login_check仅接收POST请求,若Postman使用GET方法会直接返回404。同时要确保请求体是JSON格式:
{ "email": "你的邮箱地址", "password": "你的密码" }
4. 检查路由前缀与项目Base Path
如果项目设置了APP_BASE_PATH环境变量,或路由配置中有全局前缀,实际访问路径会变为{前缀}/api/login_check。可通过debug:router的输出确认最终路由路径。
5. 验证防火墙配置一致性
核对security.yaml中json_login的check_path值(/api/login_check)与routes.yaml里的api_login_check路径完全一致,无拼写错误。另外login防火墙的pattern: ^/api/login会匹配所有以/api/login开头的路径,包含/api/login_check,这部分配置没问题。
内容的提问来源于stack exchange,提问作者Werner
相关产品推荐
相关产品推荐

