当前位置: 首页 > article >正文

PHP-Casbin v4.0.0 发布,支持 ACL、RBAC、ABAC 等模型的访问控制框架

在这里插入图片描述

PHP-Casbin 是一个用 PHP 语言打造的轻量级开源访问控制框架,支持 ACL、RBAC、ABAC 多种模型。它采用了元模型的设计思想,支持多种经典的访问控制方案,如基于角色的访问控制 RBAC、基于属性的访问控制 ABAC 等。

更新内容:

https://github.com/php-casbin/php-casbin/releases/tag/v4.0.0

  • 使用 Symfony Cache 组件重新实现 CachedEnforcer,遵循 PSR-6 规范
  • 新增条件角色管理器(ConditionalRoleManager),使 RBAC 权限控制支持角色的条件定义
  • 将 PHP 的最低版本升级为 PHP 8.0,充分利用 PHP 8.0 的新特性
  • 重构 Logger,支持直接使用 PRS-3 规范的日志实现,不在单独使用桥接(casbin/psr3-bridge)

另外,除了主库更新外,还提供了一个全新的 PHP-Casbin 起步套件(Starter kit),该套件结合 Laravel-Authz 和 Jetstream 实现,帮助新手开发者快速了解 PHP-Casbin 。

screenshot_1.jpeg

Casbin 开源项目介绍

Casbin 是一个强大的、高效的开源访问控制框架。涉及到 Go、Java、Node.js、Javascript (React)、Python、PHP、.NET、Delphi、Rust 等多种语言。

支持多种访问控制模型,在 Casbin,访问控制模型是基于 PERM 元模型 (Policy, Effect, Request, Matchers) 压缩而成的一个 CONF 文件。 因此,项目授权机制的转换或升级就像修改配置一样简单。

灵活的策略储存方式,除了内存和文件外,Casbin 策略还可以存储在许多地方。 目前 Casbin 已经支持了从 MySQL、Postgres、Oracle 到 MongoDB、Redis、Cassandra、AWS S3 等数十种数据库。

跨语言 & 跨平台,Casbin 已经使用 Golang、Java、PHP 和 Node.js 等等语言实现。 所有的实现共享相同的 API 和行为。学习一次即可到处使用。

使用 PHP-Casbin:

安装:

composer update casbin/casbin

快速使用:

  1. 初始化决策器
require_once './vendor/autoload.php';
use Casbin\Enforcer;

$e = new Enforcer("path/to/model.conf", "path/to/policy.csv");
  1. 进行权限决策
$sub = "alice"; // the user that wants to access a resource.
$obj = "data1"; // the resource that is going to be accessed.
$act = "read"; // the operation that the user performs on the resource.

if ($e->enforce($sub, $obj, $act) === true) {
    // permit alice to read data1
} else {
    // deny the request, show an error
}

项目托管仓库Github:https://github.com/php-casbin/php-casbin


http://www.kler.cn/a/463797.html

相关文章:

  • Elasticsearch:减少 Elastic 容器镜像中的 CVE(常见的漏洞和暴露)
  • 探索Docker Compose:轻松管理多容器应用
  • JavaScript系列(4)--数值类型专题
  • 实战设计模式之建造者模式
  • node.js之---事件循环机制
  • Flash Attention V3使用
  • OpenCV-Python实战(12)——图像金字塔
  • 机器学习随机森林回归模型数据预处理中归一化或者标准化
  • SQL 建表语句详解
  • Vue演练场基础知识(二)表单绑定+条件渲染
  • 【2024年-12月-25日-开源社区openEuler实践记录】easybox:简化开发运维流程的开源百宝箱
  • Android Gradle JVM配置文件gradle.properties优先级查找
  • Android TV端弹出的PopupWindow没有获取焦点
  • ECMAScript 变量
  • 纯血鸿蒙ArkUI按钮组件详解
  • 【每日学点鸿蒙知识】WebView代理、2D绘制矩形圆角、TextInput清理按钮、pdf滑动、icon配置问题
  • [算法] [leetcode-324] 摆动排序 II
  • 【C#】C#打印当前时间以及TimeSpan()介绍
  • uniapp——App下载文件,打开文档(一)
  • DeepSeek LLM通过长期主义扩展开源语言模型
  • python基础004--flask
  • python实现自动登录12306抢票 -- selenium
  • JavaSpring AI与阿里云通义大模型的集成使用Java Data Science Library(JDSL)进行数据处理
  • 上传第三方jar包到maven私服仓库的两种方法
  • 逆向生成原理
  • CSS系列(40)-- Container Queries详解