Аргумент 2, передаваемый в Arubacao BasicAuth BasicGuard::__construct(), должен быть экземпляром Illuminate Contracts AuthUserProvider, с заданным значением null

#php #laravel #lumen

#php #laravel #lumen

Вопрос:

Пытался использовать lumen для простого и легковесного REST API интерфейса, используя пакеты lumen arubacao/ http-basic-auth-guard composer.

Я добрался до проблемы с узким местом, которая: Argument 2 passed to ArubacaoBasicAuthBasicGuard::__construct() must be an instance of IlluminateContractsAuthUserProvider, null given,
called in /Applications/MAMP/htdocs/app.mydomain.com/api/vendor/arubacao/http-basic-auth-guard/src/BasicGuardServiceProvider.php on line 38

Содержимое config/auth.php:

 return [

    'defaults' => [
        'guard' => env('AUTH_GUARD', 'api'),
    ],

    'guards' => [
        'api' => [
            'driver' => 'basic',
            'provider' => 'users'
        ],

        // ...
    ],

    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model'  => AppUser::class
        ],
    ],

    'providers' => [
        //
    ],

    'passwords' => [
        //
    ],

];
  

Содержимое bootstrap/app.php

 require_once __DIR__.'/../vendor/autoload.php';

try {
    (new DotenvDotenv(__DIR__.'/../'))->load();
} catch (DotenvExceptionInvalidPathException $e) {
    //
}

$app = new LaravelLumenApplication(
    realpath(__DIR__.'/../')
);

$app->withFacades();

$app->withEloquent();

$app->singleton(
    IlluminateContractsDebugExceptionHandler::class,
    AppExceptionsHandler::class
);

$app->singleton(
    IlluminateContractsConsoleKernel::class,
    AppConsoleKernel::class
);

$app->routeMiddleware([
    'auth' => AppHttpMiddlewareAuthenticate::class,
]);

$app->register(AppProvidersAuthServiceProvider::class);
$app->register(ArubacaoBasicAuthBasicGuardServiceProvider::class);

$app->router->group([
    'namespace' => 'AppHttpControllers',
], function ($router) {
    require __DIR__.'/../routes/web.php';
});

return $app;
  

* настройка такая же, как задокументирована в репозитории arubacao / http-basic-auth-guard

Версия Lumen: 5.6.4

Комментарии:

1. Что здесь делает ваш пустой массив providers?

2. @Md.SukelAli: Получилось!

Ответ №1:

 return [

    'defaults' => [
        'guard' => env('AUTH_GUARD', 'api'),
    ],

    'guards' => [
        'api' => [
            'driver' => 'basic',
            'provider' => 'users'
        ],

        // ...
    ],

    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model'  => AppUser::class
        ],
    ],
  
 // This should be removed, it was leftover from the boiler template of lumen repo.
    'providers' => [
        //
    ],