Laravel - 参数1传递给Illuminate \ Auth \ EloquentUserProvider :: validateCredentials()

时间:2018-05-15 20:56:27

标签: laravel laravel-5

我在laravel 5.6中使用multi auth。

我使用linux 16.4。和PHP 7.2

运行http://localhost:8000/manage/login并单击“登录”按钮后,显示以下错误:

"Type error: Argument 1 passed to Illuminate\Auth\EloquentUserProvider::validateCredentials() must be an instance of Illuminate\Contracts\Auth\Authenticatable, instance of App\Admin given, called in /media/project/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php on line 380"

如何发出此问题?

1 个答案:

答案 0 :(得分:1)

这只表示您的Admin模型尚未实现Authenticatable界面。

在您的课程中加入以下use语句,然后implement,例如

use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;

class Admin extends Model implements AuthenticatableContract {
    ...
}

然后,您需要确保模型中包含所有必需的方法。最简单的方法是包含Authenticatable特征,例如

use Illuminate\Auth\Authenticatable;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;

class Admin extends Model implements AuthenticatableContract {

    use Authenticatable;
}

最后,您可能需要覆盖某些方法,具体取决于您的db表是否与开箱即用的User不同。