FatalThrowableError при использовании настраиваемой защиты для аутентификации API в laravel

Я продолжаю получать FatalThrowableError исключение или BadMethodCallException каждый раз, когда я пытаюсь пройти аутентификацию через token или же passport драйверы соответственно в моей кастомной гвардии (api-users) Однако с драйвером сеанса он работает просто отлично. Я определил охранников в соответствии с документами, но до сих пор безрезультатно, я не понимаю, где я иду не так

Код

Config \ auth.php

'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],

'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],

'api' => [ //<== this is not being used as far as i know
'driver' => 'token',
'provider' => 'users',
],

'api-users' => [  //<== I am trying to use this guard
'driver' => 'session', //<== session works, token or passport doesn't
'provider' => 'api-users',
],
],

'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],

'api-users' => [
'driver' => 'eloquent',
'model' => App\Models\ApiUser::class,
],
],

AuthController.php

class AuthController extends Controller
{
protected function guard()
{
return Auth::guard('api-users');
}

protected function attemptLogin(Request $request)
{
return $this->guard()->attempt($this->credentials($request), false);
}

protected function credentials(Request $request)
{
return $request->only('email', 'password');
}

public function login(Request $request)
{
if ($this->attemptLogin($request)) { //<== this doesn't work with token/passport driver but works with a session driver
echo 'success';
} else {
echo "fail";
}
}
}

Модели \ ApiUser.php

class ApiUser extends Authenticatable
{
use SoftDeletes;
use Notifiable;
use HasApiTokens;

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

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

/**
* Type cast the active field
*/
protected $casts = [
'active' => 'boolean',
];
}

ошибка

При использовании токена в качестве драйвера

Call to undefined method Illuminate\Auth\TokenGuard::attempt()

при использовании паспорта в качестве водителя

Method Illuminate\Auth\RequestGuard::attempt does not exist.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector