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 。
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
快速使用:
- 初始化決策器
require_once './vendor/autoload.php';
use Casbin\Enforcer;
$e = new Enforcer("path/to/model.conf", "path/to/policy.csv");
- 進行權限決策
$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