如何解决Laravel与厂商添加Gate:发布
因此,我正在开发一个作曲家程序包,该程序包将我的一些可重用代码添加到一个新的Laravel项目中。到目前为止,我已经设法通过$this->publishes()
方法中的$this->loadRoutesFrom()
和boot()
在服务提供商中添加了核心翻译文件和一些模型,路由。
现在,我想将盖茨添加到该程序包中,但是我被卡住了。我应该以某种方式在运行时将其注册到项目的AuthServiceProvider
中。如果有人可以给我一些执行任务的建议,那就太好了。
解决方法
如果您要注册策略,则无需使用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
方法非常重要,因为这样可以确保每个服务都已注册。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。