全面、系统地整理Gate(门面)的所有常见用法


🌟 Laravel Gate 完全指南

Gate 是 Laravel 中用于实现「权限控制」的核心工具。它可以判断:当前用户是否有权限执行某个操作


✅ 一、基本概念

概念 说明
Gate 全局权限控制系统,基于能力(ability)进行判断
Ability(能力) 一个字符串名称,比如 'edit-post', 'manage_users'
闭包规则 定义某个 ability 是否允许用户执行
与 Policy 区别 Gate 更适合全局/简单逻辑;Policy 更适合资源类(如 Post、User)的 CRUD 权限

🧩 二、Gate 的 6 大核心用法


🔹 1. Gate::define() —— 定义一个权限规则

这是最基础的操作,在 App\Providers\AuthServiceProviderboot() 方法中使用。

use Illuminate\Support\Facades\Gate;

Gate::define('manage_users', function ($user) {
   
   
    return $user->hasRole('admin');
});

Gate::define('delete-post', function ($user, $post) {
   
   
    // 用户是作者或管理员
    return $post->user_id === $user->id || $user->isAdmin();
});

📌 注意:

  • 第一个参数是 $user:当前登录用户
  • 后续参数是可选模型(如 $post
  • 返回 true/false 表示是否允许

✅ 建议位置:AuthServiceProvider@boot


🔹 2. Gate::allows() / Gate::denies() —— 检查权限

在控制器、服务类、中间件等地方检查权限。

if (Gate::allows('manage_users')) {
   
   
    // 可以管理用户
}

if (Gate::denies('delete-post', $post)) {
   
   
    abort(403);
}

💡 allows() 等价于 “can do”,denies() 等价于 “cannot do”


🔹 3. Gate::check() —— 批量检查多个权限

支持同时检查多个 abilities,全部通过才返回 true。

// 是否同时具备两个权限?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值