PHP用Casbin做RBAC和RESTful权限控制的方法
发表于:2024-11-29 作者:千家信息网编辑
千家信息网最后更新 2024年11月29日,本篇内容介绍了"PHP用Casbin做RBAC和RESTful权限控制的方法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔
千家信息网最后更新 2024年11月29日PHP用Casbin做RBAC和RESTful权限控制的方法
本篇内容介绍了"PHP用Casbin做RBAC和RESTful权限控制的方法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
PHP-Casbin 是一个强大的、高效的开源访问控制框架,它支持基于各种访问控制模型(RBAC
ABAC
ACL
)的权限管理。
这里使用官方提供的数据库适配器扩展:DBAL Adapter.
安装
通过composer
安装:
composer require casbin/casbincomposer 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, adming, bob, memberp, memeber, /foo, GETp, memeber, /foo/:id, GETg, admin, memberp, admin, /foo, POSTp, admin, /foo/:id, PUTp, admin, /foo/:id, DELETE
验证权限
alice
具有admin
角色,继承admin
和member
两个角色的全部权限.
$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权限控制的方法"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
权限
角色
控制
分配
方法
内容
数据
数据库
更多
知识
策略
实用
强大
学有所成
接下来
两个
困境
官方
实际
情况
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
方舟哪个服务器能升100级
无锡nac网络安全准入控制报价
服务器装机
网络安全对会计的影响
沙漠叛乱风暴怎么开服务器
泰安定制软件开发外包公司
软件开发技术服务是干嘛发
如何管理邮箱服务器中的邮件
高中信息技术数据库教学设计
汽车网络技术第二版课后习题答案
派币服务器安装
数据库事务 提交
软件开发管理制度 简书
深圳市鑫维泰软件开发公司招聘
网络安全提升年总结
网络安全家长温馨提示
网络安全一流学科评估
上海网络技术开发市场价格
泸州网络技术价目表
贵阳软件开发公司电话
暴力破解网络安全
java怎么操作数据库
软件开发大体要经历六个阶段
网络技术可以干什么
卡斯巴基网络安全
强化网络安全组织领导
彭清华网络安全和信息化
软件开发品牌故事
软件开发中心代持股份
山东鼎丰交易所软件开发