亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP用Casbin做RBAC和RESTful權限控制的方法

發布時間:2021-06-23 12:07:54 來源:億速云 閱讀:353 作者:chen 欄目:大數據

本篇內容介紹了“PHP用Casbin做RBAC和RESTful權限控制的方法”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

PHP-Casbin 是一個強大的、高效的開源訪問控制框架,它支持基于各種訪問控制模型(RBAC ABAC ACL)的權限管理。

這里使用官方提供的數據庫適配器擴展:DBAL Adapter.

安裝

通過composer安裝:

composer require casbin/casbin
composer require casbin/dbal-adapter

使用 RBAC Model

model.conf 如下:

[request_definition]
r = sub, obj, act

[policy_definition]
p = sub, obj, act

#  RBAC角色繼承關系的定義
[role_definition]
g = _, _

[policy_effect]
e = some(where (p.eft == allow))

[matchers]
m = g(r.sub, p.sub) && keyMatch3(r.obj, p.obj) && regexMatch(r.act, p.act)

初始化一個Casbin enforcer

use Casbin\Enforcer;
use CasbinAdapter\DBAL\Adapter;

$adapter = Adapter::newAdapter([
    'driver' => 'pdo_mysql',
    'host' => '127.0.0.1',
    'dbname' => 'test',
    'user' => 'root',
    'password' => '',
    'port' => '3306',
]);

$enforcer = new Enforcer('path/to/model.conf', $adapter);

添加策略

給alice和bob分配角色:

// alice has the admin role
$enforcer->addRoleForUser('alice', 'admin'); 
// bob has the member role
$enforcer->addRoleForUser('bob', 'member');

給member角色分配權限,member 角色僅對foo資源有查看權限:

$enforcer->addPermissionForUser('member', '/foo', 'GET');
$enforcer->addPermissionForUser('member', '/foo/:id', 'GET');

admin角色對foo擁有增刪改查權限:

// admin inherits all permissions of member
$enforcer->addRoleForUser('admin', 'member');

$enforcer->addPermissionForUser('admin', '/foo', 'POST');
$enforcer->addPermissionForUser('admin', '/foo/:id', 'PUT');
$enforcer->addPermissionForUser('admin', '/foo/:id', 'DELETE');

分配完角色和權限后,數據庫中的策略規則大致如下:

g, alice, admin
g, bob, member

p, memeber, /foo, GET
p, memeber, /foo/:id, GET

g, admin, member

p, admin, /foo, POST
p, admin, /foo/:id, PUT
p, admin, /foo/:id, DELETE

驗證權限

alice 具有admin角色,繼承adminmember兩個角色的全部權限.

$enforcer->enforce('alice', '/foo', 'GET'); // true
$enforcer->enforce('alice', '/foo', 'GET'); // true

$enforcer->enforce('alice', '/foo', 'POST'); // true
$enforcer->enforce('alice', '/foo/1', 'PUT'); // true
$enforcer->enforce('alice', '/foo/1', 'DELETE'); // true

bob 具有member角色, 只繼承member的權限.

$enforcer->enforce('bob', '/foo', 'GET'); // true
$enforcer->enforce('bob', '/foo', 'GET'); // true

$enforcer->enforce('bob', '/foo', 'POST'); // false
$enforcer->enforce('bob', '/foo/1', 'PUT'); // false
$enforcer->enforce('bob', '/foo/1', 'DELETE'); // false

“PHP用Casbin做RBAC和RESTful權限控制的方法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

涟源市| 赣州市| 杭州市| 图们市| 黄梅县| 盈江县| 墨竹工卡县| 临沂市| 赤峰市| 十堰市| 许昌市| 措勤县| 措美县| 东阳市| 韶关市| 渝中区| 宁晋县| 山东省| 涪陵区| 桂阳县| 福州市| 云霄县| 微博| 大渡口区| 辽阳县| 富顺县| 大安市| 舟山市| 南投市| 长春市| 延津县| 黄梅县| 鹤峰县| 绥滨县| 龙海市| 江门市| 渝北区| 广南县| 黎平县| 英吉沙县| 家居|