我有一个名为
的文件AuthServiceProvider.php
Laravel 项目中的 Providers目录中的
。
我实际上不了解它如何工作以及为什么需要它
谁能详细解释?
谢谢。
答案 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;
我知道这很复杂,但也许有助于理解这个主题