Почему я не могу найти пространство имен App\Extensions\RiakUserProvider в своем проекте Laravel после этого руководства по добавлению пользовательского поставщика?

Я абсолютно новичок в PHP и Laravel.

Я работаю над приложением Laravel 5.3, и мне нужно использовать пользовательский веб-сервис для проверки учетных данных пользователя, поэтому я пытаюсь следовать этому официальному руководству о Добавлении пользовательского поставщика. для обработки доступа пользователей: https://laravel.com/docs/5.3/authentication#adding-custom-user-providers. Итак, в теории это кажется довольно простым, но я нахожу некоторые трудности.

Как вы можете видеть в предыдущем руководстве, в качестве первого шага необходимо изменить класс App\Providers\AuthServiceProvider, содержащийся в проекте Laravel.

Итак, я изменил свой AuthServiceProvider в соответствии с учебным примером, получив следующее:

<?php

namespace App\Providers;

use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;

use Illuminate\Support\Facades\Auth;
use App\Extensions\RiakUserProvider;
use Illuminate\Support\ServiceProvider;

class AuthServiceProvider extends ServiceProvider
{
    /**
     * The policy mappings for the application.
     *
     * @var array
     */
    protected $policies = [
        'App\Model' => 'App\Policies\ModelPolicy',
    ];

    /**
     * Register any authentication / authorization services.
     *
     * @return void
     */
    public function boot()
    {
        $this->registerPolicies();

        // CUSTOM CODE:
        Auth::provider('riak', function ($app, array $config) {
            // Return an instance of Illuminate\Contracts\Auth\UserProvider...

            return new RiakUserProvider($app->make('riak.connection'));
        });
    }
}

Проблема в том, что он не может найти пространство имен App\Extension, это:

use App\Extensions\RiakUserProvider;

PhpStorm подписывает Exstensions красным цветом, говоря "Undefined Extensions namespace", поэтому он не может использовать класс RiakUserProvider в моем коде.

Почему? Нужно ли добавлять некоторые зависимости в Composer? Что случилось? Что мне не хватает? Как я могу решить эту проблему?

Что такое класс RiakUserProvider?

Что именно делает этот код:

Auth::provider('riak', function ($app, array $config) {
    // Return an instance of Illuminate\Contracts\Auth\UserProvider...

    return new RiakUserProvider($app->make('riak.connection'));
});

person AndreaNobili    schedule 25.01.2017    source источник


Ответы (1)


В документации Laravel класс RiakUserProvider — это всего лишь пример пользовательского провайдера. Класс расположен в пространстве имен App\Extensions, но фактическое содержимое класса провайдера не было предоставлено.

Если вы хотите создать пользовательского поставщика пользователей, вам следует создать папку с именем Extensions в папке App и создать файл RiakUserProvider.php, содержащий класс RiakUserProvider. Это соответствует стандарту автозагрузки класса PSR-4.

Когда вы создаете свой собственный User Provider, убедитесь, что он реализует интерфейс Illuminate\Contracts\Auth\UserProvider.

Вот хорошее пошаговое руководство по его созданию:

https://www.georgebuckingham.com/laravel-52-auth-custom-user-providers-drivers

person Chris Cynarski    schedule 25.01.2017