什么是Laravel中的AuthServiceProvider

时间:2018-12-22 19:43:19

标签: laravel

我有一个名为

的文件
AuthServiceProvider.php 

Laravel 项目中的 Providers目录中的

我实际上不了解它如何工作以及为什么需要它

谁能详细解释?

谢谢。

1 个答案:

答案 0 :(得分:1)

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,
    ]
],

和自定义模块提供者,我们注册了自定义身份验证提供者

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

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

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