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

Laravel8应用auth中间件报Array to string conversion错误如何解决

问题诱因

该错误由Laravel路由组的传参规则混用导致:
Laravel 8及以上版本中,Route::group()存在两种合法传参模式:

  1. 所有路由组配置(中间件、前缀、命名空间等)全部放入第一个数组参数,第二个参数传路由闭包
  2. 所有配置项通过链式方法(middleware()/prefix()等)提前声明,group()仅传一个闭包参数

你当前的写法混用了两种模式:先链式调用middleware(),又给group()传入了前缀配置数组,Laravel底层解析路由参数时会将传入的配置数组错误识别为路由回调参数,触发数组转字符串的类型报错。移除middleware()链式调用后,Laravel会识别为第一种传参模式,所以不会报错。

正确实现方式

写法1:全链式声明(官方推荐)

将所有配置项都通过链式方法声明,group()仅传入闭包:

Route::middleware(['auth'])
    ->prefix('admin')
    ->group(function () {
        Route::get('/', [\App\Http\Controllers\AdminController::class, 'index']);
    });

写法2:全配置数组声明

将中间件、前缀都放入group()的第一个配置数组中:

Route::group([
    'middleware' => ['auth'],
    'prefix' => 'admin'
], function () {
    Route::get('/', [\App\Http\Controllers\AdminController::class, 'index']);
});

如果后台使用单独的身份认证guard,可将中间件调整为auth:guard名称格式,例如auth:admin即可适配自定义guard的身份校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:09:02