我在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"
如何发出此问题?
答案 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
不同。