Ошибка типа Laravel 5.5: аргумент 1, передаваемый в Illuminate \ Auth \ EloquentUserProvider :: validateCredentials (), должен быть экземпляром - PullRequest
0 голосов
/ 22 мая 2018

В моем LoginController под Auth я использовал следующие коды:

namespace App\Http\Controllers\Auth;

use App\Model\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Redirect;
use Hash;
use Auth;
use DB;
use App\Model\UserAdmin;

class LoginController extends Controller {
use AuthenticatesUsers;
public function __construct() {
        $this->middleware('guest')->except('logout');
    }

public function doLogin(Request $request) {
$userdata = array(
            'email' => Input::get('email'),
            'password' => Input::get('password'),
            'status' => '1',
        );
if (Auth::guard('admin')->attempt($userdata)) {
  return Redirect::intended('/administrator/dashboard')->with('successMessage', 'You have successfully logged in.');
}
}
}

А в UserAdmin (модель) в приложении / Модель выглядит следующим образом:

namespace App\Model;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Config;
class UserAdmin extends Authenticatable {
protected $table = 'adminusers';
    public $timestamps = false;
    protected $fillable = ['firstName', 'lastName', 'email', 'company', 'website'];

    public function __construct() {
        parent::__construct(); // Don't forget this, you'll never know what's being done in the constructor of the parent class you extended
    }

}

После отправкипри входе в систему отображается ошибка:

Ошибка типа: аргумент 1, передаваемый в Illuminate \ Auth \ EloquentUserProvider :: validateCredentials (), должен быть экземпляром Illuminate \ Contracts \ Auth \ Authenticatable, instanceприложения \ Model \ UserAdmin, названный в /var/www/html/XXXXXX/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php в строке 379

Ответы [ 5 ]

0 голосов
/ 26 июля 2019

Вы должны использовать Authenticatable в пользовательской модели

, например:

use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
  //your code
}
0 голосов
/ 03 июля 2019

используйте Illuminate \ Foundation \ Auth \ AuthenticatesUsers;

Затем в вашем классе модели расширяется AuthenticatesUsers вместо Model.

0 голосов
/ 16 августа 2018

Попробуйте запустить 'composer dump-autoload', чтобы проверить наличие "неоднозначного разрешения класса пользователя".Вероятно, у вас есть два класса, определенных как пользовательский класс.

0 голосов
/ 17 марта 2019

Вы должны объявить использование AuthenticableTrait для интерфейса Authenticatable.

Например:

use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Auth\Authenticatable as AuthenticableTrait;
use Illuminate\Database\Eloquent\Model;

class Company extends Model implements Authenticatable
{
use AuthenticableTrait;
0 голосов
/ 22 мая 2018

Я полагаю, что вам необходимо добавить инструменты \ Illuminate \ Contracts \ Auth \ Authenticatable в определение класса модели UserAdmin.

    class UserAdmin extends Model implements 
    \Illuminate\Contracts\Auth\Authenticatable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...