【问题标题】:Adding a guard and provider in auth.php through serviceprovider通过 serviceprovider 在 auth.php 中添加一个守卫和提供者
【发布时间】:2017-09-09 12:00:52
【问题描述】:

Laravel 版本:5.4 PHP版本:7

我制作了一个自定义包,我想知道是否可以通过我的 ServiceProvider 添加防护和提供程序。我不希望其他开发人员在安装自定义包时需要手动将内容放入 auth.php。

所以我只想在 auth.php 中填写 'providers' 和 'guard'。

【问题讨论】:

    标签: laravel laravel-5 package


    【解决方案1】:

    如果您正在创建自定义包,那么我建议您创建自己的配置文件并发布它 (check here)。由于 auth.php 被 laravel 和其他包使用,更改它会影响它们。

    【讨论】:

    • 我不想影响现有的应用程序。也许这个人已经有一个自定义的 auth.php。
    • 你能定义一个确切的场景吗?
    • 很多人已经有一个 laravel 应用了。我制作了一个自定义电子商务包,它不会影响您现有的 laravel 配置/数据库。所以我在想是不是不可能通过我的服务提供者在我的包中添加一个提供者。现在可以在您的 auth.php 中添加它:'providers' => ['users' => ['driver' => 'eloquent', 'model' => App\User::class, ], 'husers' => [ '司机' => '雄辩的', '模型' => MyPackage\Backend\Models\User::class, ]
    【解决方案2】:

    是的,有可能:

    在你的服务提供商boot()做:

     Auth::provider('myprovidername',function ($app,array $config) { 
          return myproviderobject
     });
    
     Auth::extend("myguard", function ($app,$name, array $config) {
         return myguard;
     });
    

    需要使用您的身份验证驱动程序的人只需将以下内容放入他们的config/auth.php

    'guards' => [
         // ...
         'myguardconfig' => [
              'driver' => 'myguard',
              'provider' => 'myproviderconfig'
         ]
     ]
    
    //...
    
     'providers' => [
             // ...
            'myproviderconfig' => [
                   'driver' => 'myprovidername'
             ] 
      ]
    

    【讨论】:

    • 是否可以自动完成最后一步?我对第一步很熟悉。我想要一个没有太多步骤的干净安装指南:)
    • @matthijsneijenhuijs laracasts.com/discuss/channels/laravel/… 可能会有所帮助。您可以编写自己的包配置并将其合并。
    • Thnx,这就是解决方案! [代码] $this->mergeConfigFrom(DIR . '/Config/provider.php', 'auth.providers'); $this->mergeConfigFrom(DIR . '/Config/guard.php', 'auth.guards'); [/code]
    • 嗯。没有。我刚收到Auth guard [icmsapi] is not defined. :/
    猜你喜欢
    • 2018-09-29
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 2016-03-27
    相关资源
    最近更新 更多