#laravel-5.7 #laravel-authentication
#laravel-5.7 #laravel-аутентификация
Вопрос:
Я получаю эту ошибку при попытке входа в систему нескольких пользователей с помощью guards и не могу понять, какой экземпляр ему нужно передать:
Argument 1 passed to
IlluminateAuthEloquentUserProvider::validateCredentials() must be an
instance of IlluminateContractsAuthAuthenticatable, instance of
AppEmploys given, called in /var/www/html/crmproject/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php on line 379
Это мой контроллер аутентификации:
<?php
namespace AppHttpControllersAuth;
use AppHttpControllersController;
use IlluminateFoundationAuthAuthenticatesUsers;
use IlluminateHttpRequest;
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 IlluminateDatabaseEloquentModel;
use IlluminateAuthAuthenticatable;
// use IlluminateContractsAuthAuthenticatable as
AuthenticatableContract;
class Employs extends Model// implements AuthenticatableContract
{
protected $primaryKey = 'employ_id';
}
я перепробовал много решений, предоставленных онлайн / stackoverflow, но я постоянно получаю эту ошибку, и если вы обнаружите, что этот вопрос имеет двусмысленность, пожалуйста, спросите, прежде чем голосовать против, я пробую это в последний раз здесь.
Комментарии:
1. Почему вы комментируете
AuthenticatableContract
в модели?2. потому что это выдает другую ошибку абстрактных классов, которую я не понимаю, почему @PoojaJadav
Ответ №1:
Вы должны создать такую модель:
Модель
<?php
namespace App;
use IlluminateNotificationsNotifiable;
use IlluminateFoundationAuthUser 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',
];
}
Я надеюсь, что это сработает для вас.
Комментарии:
1. вау, на этот раз я не получил никакой ошибки, благодаря этому решена проблема передачи глупого недопустимого аргумента, большое спасибо
2. Мое удовольствие! 🙂
3. итак, SoF обнаружил ваши нарушения при голосовании и забанил ваш аккаунт?
4. Мой аккаунт приостановлен на одну неделю. 🙁
5. ну, они узнают, поступает ли много голосов «за» / «против» через один и тот же идентификатор человека, поэтому дайте большой разрыв между голосами, например, каждый день делайте максимум 2 голоса «за» от идентификатора друга / коллеги: p