2

我对PHPLaravel完全陌生。

我正在开发一个Laravel 5.3应用程序,我必须使用自定义 Web 服务来检查用户凭据,所以我正在尝试遵循这个关于添加自定义提供程序来处理用户访问的官方教程:https ://laravel.com/docs /5.3/authentication#adding-custom-user-providers。所以,理论上它看起来很简单,但我发现了一些困难。

正如您在上一个教程中看到的那样,第一步是修改 Laravel 项目中包含的App\Providers\AuthServiceProvider类。

因此,我根据获得此的教程示例修改了我的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 用红色标记扩展,说“未定义扩展命名空间”,因此它不能在我的代码中使用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'));
});
4

1 回答 1

3

在 Laravel 文档中,RiakUserProvider该类只是一个示例自定义用户提供程序。类位于App\Extensions命名空间中,但未提供实际的提供者类内容。

如果要创建自定义用户提供程序,则应在文件夹中创建一个名为ExtensionsApp文件夹并创建RiakUserProvider.php包含RiakUserProvider类的文件。这遵循PSR-4类自动加载标准。

当您创建自己的用户提供程序时,请确保它实现Illuminate\Contracts\Auth\UserProvider接口。

这是创建一个很好的分步教程:

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

于 2017-01-25T16:28:54.180 回答