Laravel升级至7后使用auth中间件触发非法偏移类型异常
解决Laravel 7中使用
auth中间件抛出非法偏移类型异常的问题 我刚仔细排查了你的配置,问题根源很明确——你的Http\Kernel.php里没有注册auth中间件的别名!
问题原因
你在路由组里使用了['auth']中间件,但在Kernel.php的$routeMiddleware数组中,完全找不到auth对应的中间件绑定。Laravel无法识别这个别名,解析时出现错误,才会把HttpRequest对象错误地传入AuthManager的guard()方法里,触发非法偏移类型的异常。
快速修复方案
打开你的app/Http/Kernel.php,找到$routeMiddleware数组,添加一行auth中间件的注册:
protected $routeMiddleware = [ 'localization' => \App\Http\Middleware\localization::class, 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, // 新增这一行 'auth' => \Illuminate\Auth\Middleware\Authenticate::class, ];
补充说明
- 你已经在文件顶部导入了
Authenticate类,所以直接添加别名绑定即可,不需要额外导入。 - 如果你是给API路由做认证,可以在路由里使用
auth:api来指定API guard,但前提也是要先注册auth这个中间件别名。 - 修复后重启一下你的服务(如果用了
php artisan serve的话),再请求路由就能正常触发认证逻辑,不会再抛出异常了。
内容的提问来源于stack exchange,提问作者MaikiSpikey
相关产品推荐
相关产品推荐

