文檔 |教程 |擴充
突發新聞:Laravel-authz 現已推出,這是 Laravel 框架的授權庫。
PHP-Casbin是一個強大、高效的PHP專案開源存取控制庫。它為基於各種存取控制模型的強制授權提供支援。
卡賓 | jCasbin | 節點Casbin | PHP-Casbin |
生產就緒 | 生產就緒 | 生產就緒 | 生產就緒 |
PyCasbin | 卡賓網 | Casbin-CPP | Casbin-RS |
生產就緒 | 生產就緒 | 生產就緒 | 生產就緒 |
在專案的composer.json
中需要此套件。這將下載該套件:
composer require 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
}
write-article
、 read-log
等權限來針對一種資源而非單一資源。它不控制對特定文章或日誌的存取。resource.Owner
這樣的語法糖可以用來取得資源的屬性。/res/*
、 /res/:id
等路徑和GET
、 POST
、 PUT
、 DELETE
等 HTTP 方法。在 php-casbin 中,基於PERM 元模型(Policy、Effect、Request、Matchers)將存取控制模型抽象化為 CONF 檔案。因此,切換或升級專案的授權機制就像修改配置一樣簡單。您可以透過組合可用的模型來自訂您自己的存取控制模型。例如,您可以將 RBAC 角色和 ABAC 屬性放在一個模型中,並共用一組策略規則。
php-casbin中最基本、最簡單的模型是ACL。 ACL的模型CONF為:
# Request definition
[request_definition]
r = sub, obj, act
# Policy definition
[policy_definition]
p = sub, obj, act
# Policy effect
[policy_effect]
e = some(where ( p.eft == allow))
# Matchers
[matchers]
m = r.sub == p.sub && r.obj == p.obj && r.act == p.act
ACL 模型的策略範例如下:
p, alice, data1, read
p, bob, data2, write
這意味著:
php-casbin 的作用:
{subject, object, action}
形式或您定義的自訂形式強制執行策略,支援允許和拒絕授權。root
或administrator
。超級使用者可以在沒有明確權限的情況下執行任何操作。keyMatch
可以將資源鍵/foo/bar
對應到模式/foo*
。php-casbin 不做什麼:
username
和password
)https://casbin.org/docs/en/overview
您也可以使用線上編輯器 (http://casbin.org/editor/) 在 Web 瀏覽器中編寫 php-casbin 模型和策略。它提供syntax highlighting
和code completion
等功能,就像程式語言的 IDE 一樣。
https://casbin.org/docs/tutorials
php-casbin 提供了兩套 API 來管理權限:
https://casbin.org/docs/en/adapters
https://casbin.org/docs/en/role-managers
模型 | 模型文件 | 政策文件 |
---|---|---|
前十字韌帶 | basic_model.conf | basic_policy.csv |
具有超級使用者的 ACL | basic_model_with_root.conf | basic_policy.csv |
無用戶的 ACL | basic_model_without_users.conf | basic_policy_without_users.csv |
無資源ACL | basic_model_without_resources.conf | basic_policy_without_resources.csv |
RBAC | rbac_model.conf | rbac_policy.csv |
具有資源角色的 RBAC | rbac_model_with_resource_roles.conf | rbac_policy_with_resource_roles.csv |
帶有域/租戶的 RBAC | rbac_model_with_domains.conf | rbac_policy_with_domains.csv |
阿巴克 | abac_model.conf | 不適用 |
寧靜的 | keymatch_model.conf | keymatch_policy.csv |
拒絕-覆蓋 | rbac_model_with_deny.conf | rbac_policy_with_deny.csv |
優先事項 | 優先權模型.conf | 優先策略.csv |
Web 框架的 Authz 中間件:https://casbin.org/docs/middlewares
https://casbin.org/docs/adopters
這個項目的存在要感謝所有做出貢獻的人。
感謝我們所有的支持者! [成為支持者]
成為贊助商來支持該計畫。您的徽標將顯示在此處,並帶有指向您網站的連結。 [成為贊助商]
該專案根據 Apache 2.0 許可證獲得許可。
如果您有任何問題或功能要求,請與我們聯絡。歡迎公關。