API-Platform JWT报错:未找到GET /api/login路由
解决LexikJWTAuthenticationBundle登录路由找不到的问题
你遇到的"No route found for 'GET /api/login'"问题,其实是LexikJWTAuthenticationBundle的使用细节没踩对,主要是请求方法错误和路由路径不匹配这两个点,新手很容易在这里栽坑,我给你一步步梳理解决方案:
1. 纠正请求的方法和端点路径
LexikJWTAuthenticationBundle的默认登录验证端点是/api/login_check,而且它只接受POST请求,不支持GET!你用GET请求/api/login自然找不到对应的路由。
正确的测试方式应该是发送POST请求到/api/login_check,并且把用户名和密码放在请求体里(绝对不要放在URL参数里,会泄露敏感信息)。举个curl的例子:
curl -X POST -H "Content-Type: application/json" http://localhost:8000/api/login_check -d '{"username":"john","password":"doe"}'
2. 检查路由配置是否正确
确保你的路由配置里已经注册了登录验证的路由:
- 如果你是用单独的路由文件,打开
config/routes/lexik_jwt_authentication.yaml,确认内容如下:
api_login_check: path: /api/login_check methods: [POST]
- 要是你把路由写在
config/routes.yaml里,也要保证有上面这段配置。
你可以运行Symfony的路由调试命令,确认这条路由是否存在:
php bin/console debug:router
在输出里找api_login_check,看看它的路径和允许的请求方法是不是和上面的配置一致。
3. (可选)自定义登录路径
如果你确实想把登录路径改成/api/login,只需要修改路由配置里的path值就行,比如:
api_login_check: path: /api/login methods: [POST]
但记住,请求方法必须保持POST,不能用GET。
按照上面的步骤调整后,应该就能正常获取JWT令牌了。
内容的提问来源于stack exchange,提问作者sylvain
相关产品推荐
相关产品推荐

