阅读(2783)
赞(8)
Laravel 8 编写 Gates
2021-06-29 16:33:49 更新
Gates 是用来决定用户是否授权执行给予动作的一个闭包函数,并且典型的做法就是在 App\Providers\AuthServiceProvider
中使用 Gate
来定义。Gates 总是接收一个用户实例作为第一个参数,并且可以接收可选参数,比如相关的 Eloquent 模型:
/**
* 注册任意用户认证、用户授权服务
*
* @return void
*/
public function boot()
{
$this->registerPolicies();
Gate::define('edit-settings', function ($user) {
return $user->isAdmin;
});
Gate::define('update-post', function ($user, $post) {
return $user->id === $post->user_id;
});
}
也可以使用类回调数组来定义门,例如控制器:
use App\Policies\PostPolicy;
/**
* 注册任意用户认证、用户授权服务
*
* @return void
*/
public function boot()
{
$this->registerPolicies();
Gate::define('update-post', [PostPolicy::class, 'update']);
}