0

0

Laravel 权限控制 Gate Policy

不言

不言

发布时间:2018-06-05 09:46:04

|

2348人浏览过

|

来源于php中文网

原创

这篇文章主要介绍了关于Laravel 权限控制 Gate Policy,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

关于权限

本质 针对一段可执行的逻辑单元描述是否开启生产的判断。

定义 必定有一用户实例或唯一标识参数,以及与之关联的使用资源。通常使用闭包或函数或方法

使用 调用权限逻辑单元句柄,参数 权限操作对象,用户信息。

源起

最基本的权限控制,三元运算符 ?:。很显然条件判断,后面跳到相应的执行逻辑。

laravel的思路是将执行逻辑(生产代码),授权(条件判断逻辑)进行分离。重点关注条件的产生,通俗讲强化授权逻辑(这对复杂的授权十分有用)。公设:所有的代码在服务注册完毕后,启动。所以下面这段代码会被注册。其目的是找到真正授权判断的逻辑体。

Gate::define('update articles', 'ArticlePolicy@update')

其中第一个参数显然只是一个授权标识符(用来调用的句柄参数),第二个参数才为授权的逻辑执行体。

laravel授权定义

AuthServiceProviderboot 方法里定义授权

Gate::define('update articles', function ($user, $article) {
    return $user->id == $article->user_id;
});

Gate::define('update articles', 'ArticlePolicy@edit');
id == $article->author_id;
    }
}

laravel授权使用

  1. Gate 门面:Gate::allows('update articles', $article)Gate::denies('update articles', $article)

  2. Controller 引入了

    trait AuthorizesRequests

    西安网上购物网店系统
    西安网上购物网店系统

    西安网上购物网店系统的主要亮点:(1)商品的分类更加细化和明朗,可以三级分类,价格可以多层次\多级别,按照后台设置的,吸引会员加入。(2)会员和非会员购物并存,订单直接支付和会员帐户支付并存,电话支付与网上支付多种支付方式。(3)自定义商品扩展属性,多种扩展属性定义模式,强大的商品管理功能,多重分类功能(4)灵活的会员积分系统,灵活的会员权限控制,模版丰富多彩,模版代码分离,方便修改模版(5)支付

    下载

    $this->authorize('update articles', $article)

  3. Blade 模板:@can('update articles', $article)@cannot('update articles', $article) 指令。

  4. User Model 实例:$user->can('update articles', $article)$user->cannot('update articles', $article)

Laravel Policy

为了方便地定义和使用授权,Laravel 在Gate的基础上引入了 Policy。policy内部的每一个方法,都会被用gate::define方法的描述注册。所以这就是为什么使用了策略类注册之后,即便没有用Gate门面定义授权逻辑,在控制器内仍然可以使用Gate::allow('策略类方法')的形式来进行授权判断 。

AuthServiceProviderpolicies 数组属性里先定义授权映射关系

/**
 * The policy mappings for the application.
 *
 * @var array
 */
protected $policies = [
    Article::class => ArticlePolicy::class,
];
id == $article->author_id;
    }

     public function before($user, $ability)
    {
        if($user->isSuperAdmin()){
            return true;
        }
    }
 }

注意

Policy 只是在普通 PHP 类基础上添加了一个 HandlesAuthorization trait。

在 Policy 中会在所有方法执行前调用,经常用到的地方就是处理管理员授权逻辑。

相关推荐:

Laravel利用gulp如何构建前端资源

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

4

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

7

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

42

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

4

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

3

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

3

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Laravel---API接口
Laravel---API接口

共7课时 | 0.6万人学习

PHP自制框架
PHP自制框架

共8课时 | 0.6万人学习

PHP面向对象基础课程(更新中)
PHP面向对象基础课程(更新中)

共12课时 | 0.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号