PHP用Casbin做RBAC和RESTful权限控制的方法
发表于:2024-09-24 作者:千家信息网编辑
千家信息网最后更新 2024年09月24日,本篇内容介绍了"PHP用Casbin做RBAC和RESTful权限控制的方法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔
千家信息网最后更新 2024年09月24日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安全错误
数据库的锁怎样保障安全
北京辰安软件开发公司
湖南微型软件开发厂家报价
诺基亚5g网络技术
洛阳哪里学计算机网络技术教程
系统管理员要服务器地址
打开远程数据库
互联网科技产品企业
Samba服务器配置 安全共享
雁塔区软件开发行情
mc服务器时间不动
双阳区有名的网络技术服务
金融数据库 账号
推动互联网产业科技向善
无法与媒体服务器
远江盛邦网络安全公安部
岳阳软件开发定制
长春软件开发公司哪个好
服务器电源风扇为什么不能调速
上海拎住互联网科技有限公司
世界网络技术的发展
西伯利亚 服务器
华为服务器出售给河南哪家公司
软件开发和软件技术哪个好
深圳易迅捷互联网科技有限公司
打破网络安全边界
很棒的ecs云服务器
服务器odm证书
网络安全周校园日电信日
数据库技术及应用是干什么的
公安局加强网络安全管理简报