PHP用Casbin做RBAC和RESTful权限控制的方法
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,本篇内容介绍了"PHP用Casbin做RBAC和RESTful权限控制的方法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔
千家信息网最后更新 2025年02月23日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安全错误
数据库的锁怎样保障安全
公安调取网络安全日志
怎么显示隐藏数据库
临沂大学大型数据库技术
全链路ui设计和软件开发谁更好
小海鸥网络技术
联想万全r510服务器bios
破解加密的数据库
网络安全舆情培训方案
软件开发与测试集成平台
服务器的磁盘管理器怎么打开
数据库读取柱状图
微信用的哪国的服务器
网络安全法网络治理的概念
河北网络技术工程
网络安全信息管理的论文
阳江民宿软件开发
数据库笔试题库
天津社区商城软件开发
使用代理服务器上国外网站
mysql数据库集群方案
滁州电商软件开发外包公司
大一计算机网络安全实验报告
精诚智达网络技术有限公司
丰田gps服务器连接不上
医院删除数据库
2020年网络技术挑战赛总决赛
vfp数据库设计器
服务器主板不插风扇不启动
xp的软件开发过程
网上网络安全法考试的目的