Laravel 中的 AuthServiceProvider 是什么

Bab*_*med 2 laravel

我有一个名为

AuthServiceProvider.php 
Run Code Online (Sandbox Code Playgroud)

Laravel项目的Providers 目录中。

我实际上不明白它是如何工作的以及为什么需要它

谁能详细解释一下吗?

提前致谢。

小智 5

AuthServiceProvider 是 Laravel 用于在系统中进行服务身份验证的默认防护。但如果您需要,您可以为特定情况创建自己的守卫,在这种情况下您将拥有自己的 AuthServiceProvider。例如。在我们制作的一个系统中,客户拥有自己的数据库及其特定的用户表,我们不能使用默认的 Laraver AuthServiceProvider。因为表还有其他字段。所以我们创建了 CustomAuthProvider。它很复杂,但是您需要在 config/auth.php 中声明驱动程序

...
'defaults' => [
    'guard' => 'web',
    'passwords' => 'users',
    'provider' => 'custom' // Our custom driver
],
...
'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'custom', // Our custom driver
    ],
    ...
],
...
'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => Modules\Pickandroll\Entities\User::class,
    ],
    'custom' => [
        'driver' => 'pickandrolluser', //Our Custom Auth Provider
        'model' => Modules\Pickandroll\Entities\User::class,
    ]
],
Run Code Online (Sandbox Code Playgroud)

以及我们注册自定义身份验证提供程序的自定义模块提供程序

 public function register()
    {
        Auth::provider('pickandrolluser', function ($app, array $config) {
            return new PickandrollUserProvider($config['model']);
        });
    }
Run Code Online (Sandbox Code Playgroud)

以及扩展使用 Illuminate\Contracts\Auth\UserProvider 的 PickandrollUserProvider 类;

我知道这很复杂,但也许有助于理解这个主题