Laravel本地登录报错:Argument #1 ($user)需为Authenticatable类型求助
问题根源
错误提示已经明确了问题核心:Laravel认证系统要求用于登录校验的用户模型必须实现Illuminate\Contracts\Auth\Authenticatable接口,你当前的App\Models\user仅继承了基础的Model类,不满足认证系统的类型要求。
修复步骤
1. 修改User模型代码
你不需要手动实现所有认证相关方法,Laravel已经提供了封装好的认证基础类,直接替换继承关系即可,修改App/Models/user.php代码如下:
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; // 替换原来的Model引用,使用Laravel内置的认证用户基础类 use Illuminate\Foundation\Auth\User as Authenticatable; // 类名建议大写为User,符合Laravel命名规范,文件名同步改为User.php class User extends Authenticatable { use HasFactory; protected $fillable = [ 'name', 'email', 'password', ]; // 你之前手写的getAuthIdentifier、getAuthPassword等认证相关方法可以全部删除 // Authenticatable基础类已经内置了所有符合接口要求的默认实现 }
2. 校验认证配置(可选)
打开config/auth.php确认用户提供者配置和你的模型对应:
'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\Models\User::class, ], ],
3. 清理缓存(可选)
如果修改后仍报错,执行命令清理配置缓存即可:
php artisan config:clear
修改完成后重新测试登录功能即可正常运行。
内容的提问来源于stack exchange,提问作者TETSU
相关产品推荐
相关产品推荐

