Laravel Sanctum用于REST API时出现无限递归错误求助
Laravel Sanctum 无限递归错误解决方法
针对你遇到的auth:sanctum中间件触发Maximum call stack size reached无限递归错误,以下是排查和解决步骤:
1. 检查Auth配置文件
打开config/auth.php,确认sanctum guard的配置正确,避免循环引用:
'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'sanctum' => [ 'driver' => 'sanctum', 'provider' => 'users', ], ],
注意:不要将默认guard设置为sanctum(除非你明确需要),默认保持web即可。
2. 清除配置缓存
配置文件修改后必须清除缓存,否则旧配置会导致异常:
php artisan config:clear php artisan cache:clear
3. 验证Sanctum中间件注册
打开app/Http/Kernel.php,确认api中间件组已正确包含Sanctum的状态保持中间件:
protected $middlewareGroups = [ // ...其他配置 'api' => [ \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, 'throttle:api', \Illuminate\Routing\Middleware\SubstituteBindings::class, ], ];
4. 排查自定义Auth逻辑
检查App\Providers\AuthServiceProvider的boot方法,确保没有错误地重写或绑定sanctum guard的逻辑,避免触发递归调用。
5. 重新发布Sanctum配置(可选)
如果怀疑配置文件损坏,重新发布Sanctum的默认配置:
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
额外验证
在Postman调用接口时,确保请求头正确携带Authorization: Bearer {你的认证token},虽然当前错误是递归问题,但正确的请求头是接口正常工作的前提。
内容的提问来源于stack exchange,提问作者Rifatur Rana
相关产品推荐
相关产品推荐

