Laravel Passport配置api守卫时触发TypeError类型不匹配错误求助
Laravel Passport配置api守卫时触发TypeError类型不匹配错误求助
我在使用Laravel 10.48.22搭配Laravel Passport 12.3.0时遇到了一个类型错误,实在找不到解决办法,来求助大家!
复现步骤
- 按照Laravel官方文档的指引,把预设的应用路由迁移到了单独的
api.php文件中 - 在
config/passport.php配置文件里,将guard选项设置为了'api'
错误信息
TypeError: Laravel\Passport\Http\Controllers\AuthorizationController::__construct(): Argument #2 ($guard) must be of type Illuminate\Contracts\Auth\StatefulGuard, Laravel\Passport\Guards\TokenGuard given in file C:\PHP\rest-api-backend\vendor\laravel\passport\src\Http\Controllers\AuthorizationController.php on line 52
我已经尝试的排查操作
- 仔细检查了
config/auth.php文件,确认api守卫的定义完全正确 - 反复查阅Laravel Passport的官方文档,想找到针对
api守卫的额外配置要求,但没发现遗漏 - 在Stack Overflow上搜了一圈类似的问题,可惜都没找到能解决我这个情况的方案
可能的原因推测
AuthorizationController类期望接收的是StatefulGuard类型的守卫,但实际传入的是TokenGuard,类型不匹配导致报错- 可能我的配置流程有缺失,需要完成某些额外步骤才能让Laravel Passport和
api守卫正常配合
我需要大家帮忙的地方
- 想弄明白为什么
AuthorizationController会要求StatefulGuard,而不是我配置的TokenGuard? - 有没有办法解决这个类型不匹配的问题,让
api守卫能和Laravel Passport正常工作?
补充信息
- 涉及到的相关代码片段包括:
config/passport.php中的守卫配置config/auth.php中的API守卫定义api.php里的相关路由定义
- 我已经注释掉了
api.php文件中预设的Laravel Passport路由
备注:内容来源于stack exchange,提问作者alireza.haraji.dev
相关产品推荐
相关产品推荐

