You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Auth::guard传sanctum配置报Illegal offset type错误如何修复

Lighthouse有状态认证Auth::guard()报Illegal offset type错误解答

问题1:直接硬编码传入'web'的修复方式是否正确?

如果你的项目固定使用web作为Sanctum的认证守卫,这种写法可以正常实现功能,不存在运行错误。但这种写法属于硬编码实现,丢弃了配置读取的灵活性,后续如果需要调整Sanctum使用的认证守卫,必须手动修改业务代码,不符合Laravel配置优先的设计规范,不属于最优修复方案。

问题2:如何配置让官方示例代码正常运行?

报错的核心原因是config('sanctum.guard', 'web')返回了非字符串类型值,不符合Auth::guard()方法的参数类型要求,本质是Sanctum配置异常导致,按以下步骤修复即可:

  • 发布Sanctum默认配置文件:执行Artisan命令php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider",执行后config目录下会生成sanctum.php配置文件。
  • 校验配置项值:打开config/sanctum.php,找到guard配置项,确认其值为字符串类型的守卫名称,单守卫默认场景下可参考如下配置:
'guard' => 'web',

注意不要将该值设置为数组、null等非字符串类型,否则就会触发参数类型不匹配错误。

  • 清理配置缓存:执行php artisan config:clear清除旧的配置缓存,确保新配置可以被正确读取。

完成以上配置后,官方示例中的$guard = Auth::guard(config('sanctum.guard', 'web'));代码即可正常运行,后续需要切换Sanctum认证守卫时,直接修改sanctum.php中的对应配置即可,无需调整业务代码。

问题涉及运行环境

  • laravel: 9.11
  • laravel/sanctum: 2.14.1
  • lighthouse: 5.50
  • laravel-graphql-playground: 2.6

内容的提问来源于stack exchange,提问作者ys64

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 07:51:24