PHP用Casbin做RBAC和RESTful权限控制的方法
发表于:2024-09-25 作者:千家信息网编辑
千家信息网最后更新 2024年09月25日,本篇内容介绍了"PHP用Casbin做RBAC和RESTful权限控制的方法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔
千家信息网最后更新 2024年09月25日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安全错误
数据库的锁怎样保障安全
中转服务器安全一点吗
武汉网站建设服务器
软件开发企业如何盈利
歙县网络安全电话
浙江 网络安全企业
网络安全规划方案计划表
文明六2k服务器到底怎么更新
江北软件开发公司地址
云数据库如何体现可持续发展
时装表演视频软件开发
数据库哪个好用 介绍
目前网络安全技术难学吗
中国几大数据库
网络安全 方面的期刊
奉贤区新时代软件开发费用
上海网络服务器机柜哪家强
南宁财政局网络安全
衢州惠普服务器
单细胞测序服务器配置
飞腾tgc163服务器
微信数据库密码破解器
盐城手机软件开发项目
计算机网络安全黑板报模板
浅谈网络技术对会计影响
glance密码数据库
佛山市意魅聚网络技术
网络安全信任等级
北京市网络安全人才培养政策
医院信息与网络技术课程设计
信阳网络技术质量