【问题标题】:Laravel adding Gate with vendor:publishLaravel 添加 Gate 和 vendor:publish
【发布时间】:2020-08-11 06:50:10
【问题描述】:

所以我正在开发一个 composer 包,它将我的几个可重用代码添加到一个新的 Laravel 项目中。到目前为止,我已经在我的boot() 方法中使用$this->publishes()$this->loadRoutesFrom() 在我的服务提供商中添加了核心翻译文件和一些模型、路由。

现在我想将 Gates 添加到该软件包中,但我被卡住了。不知何故,我应该在运行时在项目的AuthServiceProvider 中注册这些。如果有人能给我一些如何执行这项任务的建议,那就太好了。

【问题讨论】:

  • 这和 Composer 有什么关系?
  • 因为我正在构建一个作曲家包。但我指出它与 laravel 更相关。

标签: laravel laravel-7


【解决方案1】:

如果要注册策略,不需要使用AuthServiceProvider,直接使用Illuminate\Support\Facades\Gate::policy($key, $value)即可。

您可以在您自己的包的 ServiceProvider 中执行此操作。如果你想定义能力,你可以像这样添加一个boot 方法:

    use Illuminate\Contracts\Auth\Access\Gate as GateContract;

    // ...

    public function boot(GateContract $gate)
    {
        $gate->define('update-post', function ($user, $post) {
            return $user->id === $post->user_id;
        });
    }

这将为您解析门实例并允许您定义能力。使用boot 方法很重要,因为这样可以确保每个服务都已注册。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-19
    • 1970-01-01
    • 2020-01-25
    • 2023-01-12
    • 2019-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多