Пытаясь многопользовательской аутентификации, он продолжает говорить неверный экземпляр переданного аргумента - PullRequest
2 голосов
/ 11 апреля 2019

Я получаю эту ошибку при попытке войти в систему нескольких пользователей с охраной и неспособностью понять, какой экземпляр необходимо передать:

Argument 1 passed to 
Illuminate\Auth\EloquentUserProvider::validateCredentials() must be an 
instance of Illuminate\Contracts\Auth\Authenticatable, instance of 
App\Employs given, called in /var/www/html/crmproject/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php on line 379

Это мой контроллер аутентификации:

<?php 
namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;

class EmploysLoginController  extends Controller
{
 use AuthenticatesUsers;

 protected $guard = 'Employs';
/**

 * Where to redirect users after login.

 *

 * @var string

 */

protected $redirectTo = '/Employs';

/**

 * Create a new controller instance.

 *

 * @return void

 */

public function __construct()
{
    $this->middleware('guest')->except('logout');
}

public function showLoginForm()
{
    return view('auth.employe-login');
}

public function login(Request $request)
{

    if (auth()->guard('Employs')->attempt(['email' => $request->email, 'password' => $request->password])) {

        dd(auth()->guard('Employs')->user());
    }

    return back()->withErrors(['email' => 'Email or password are wrong.']);
 }
}

Это моя модель:

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Authenticatable;
// use Illuminate\Contracts\Auth\Authenticatable as 
AuthenticatableContract;

class Employs extends Model// implements AuthenticatableContract 
{
  protected $primaryKey = 'employ_id';
}

Я пробовал много решений, предоставленных онлайн / stackoverflow, но я постоянно получаю эту ошибку, и если вы обнаружите, что этот вопрос имеет двусмысленность, пожалуйста, спросите, прежде чем делать голосование вниз, яЯ пробую это в прошлый раз здесь.

1 Ответ

2 голосов
/ 11 апреля 2019

Вы должны создать такую ​​модель:

Модель

    <?php

        namespace App;

        use Illuminate\Notifications\Notifiable;
        use Illuminate\Foundation\Auth\User as Authenticatable;

        class Employs extends Authenticatable
        {
            use Notifiable;

            protected $guard = 'Employs';

            /**
             * The attributes that are mass assignable.
             *
             * @var array
             */
            protected $fillable = [
                'name', 'email', 'password',
            ];

            /**
             * The attributes that should be hidden for arrays.
             *
             * @var array
             */
            protected $hidden = [
                'password', 'remember_token',
            ];
        }

Надеюсь, эта работа для вас.

...