PHP用Casbin做RBAC和RESTful权限控制的方法
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,本篇内容介绍了"PHP用Casbin做RBAC和RESTful权限控制的方法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔
千家信息网最后更新 2025年01月20日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安全错误
数据库的锁怎样保障安全
中国为什么没有根服务器
人工智能中什么是综合数据库
华工科技是工业互联网吗
考试作业网络安全第3次
广州直播软件开发哪家好
软件开发从业人员
网络安全的在学校中的必要性
高校网络安全问题的思考
面向对象数据库是什么的产物
2006年网络安全深化落实
网网络安全宣传创新
美团属于互联网科技吗
网络安全和别人共用wifi
松树林网络技术
网络安全3D可视化
轩辕传奇服务器怎么样
瑜道网络技术有限公司
数据库设计模式举例
智能汽车网络安全体系
计算机网络技术调研报告结论
Cisco网络技术教程
无锡系统软件开发公司
四川软件开发
自己创建的服务器进不去
数据库专业以后做什么
青岛天鸿网络技术有限公司
安徽电视墙服务器云主机
doris数据库升级版
戴尔r740服务器内存条
我的世界服务器刷铁机一天