Laravel用户授权Gate和Policy


Laravel用户授权Gate和Policy

翻译人:刘欣

简介

Laravel 提供了可以很简单的方法来对用户与资源的授权关系进行管理。

有时候我们需要一些即使已经通过了” 身份验证(authentication)”的用户也无权对应序中的一些模型或数据库记录进行操作。

Laravel主要提供了两种授权操作的方法: gates(拦截器)和 policies(策略)。

拦截器(gates)类比成路由。
策略(policies)类比成控制器。

拦截器(Gates)提供了一种轻便的基于闭包函数的授权方法,像是路由。而策略(policies),就像是一个控制器,对特定模型或资源,进行分组管理的逻辑规则。

在写代码的时候,不要纠结是使用拦截器(gates)还是使用策略(policies),大多数时候都需要同时使用两者,才能够更好的进行工作。

拦截器(gates),更适用于没有与任何模型或资源有关的授权操作,例如查看管理员仪表盘。

而希望为特定的模型或资源进行授权管理时,应该使用策略(policies) 方法。

拦截器 (Gates)

拦截器(Gates)是用来确定用户是否有权执行给定操作的闭包函数。

默认条件下,拦截器(Gates)的使用,是在 App\Providers\AuthServiceProvider 类中的 boot 函数里来规定 Gate 规则。拦截器(Gates)始终接收用户实例为其第一个参数,并且可以选择性的接收其他参数,例如相关的 Eloquent 模型。

在下面的例子中,我们将定义一个拦截器(Gates),并通过调用 App\Models\Post 类,来实现结合用户的 POST 请求,命中给定的规则。拦截器(Gates)将通过比较用户的 id ,和 POST 请求中的 user_id 来实现这个目标:

0

【Laravel用户授权Gate和Policy隶属于分类:

它起初由本站用户:刘欣Eden于2年前 创建。

该内容的链接是:

目录