代码之家  ›  专栏  ›  技术社区  ›  user9796679

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

  •  0
  • user9796679  · 技术社区  · 6 年前

    我在laravel 5.6中使用多重身份验证。

    我使用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 回复  |  直到 6 年前
        1
  •  4
  •   halfer    6 年前

    这只是意味着你的 Admin 模型尚未实现 Authenticatable 界面

    包括以下内容 use 在课堂上发言,然后 implement it,例如。

    use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
    
    class Admin extends Model implements AuthenticatableContract {
        ...
    }
    

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

    use Illuminate\Auth\Authenticatable;
    use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
    
    class Admin extends Model implements AuthenticatableContract {
    
        use Authenticatable;
    }
    

    最后,您可能需要重写某些方法,这取决于db表是否与现成的不同 User .