php AuthRelationship v0.0.1发布:世界上最简洁给力的rbac实现

<<采用mixin原理实现的rbac解决方案>>之php版:AuthRelationship v0.0.1
作者:axgle
功能特征(write less,do more):
1.支持一个用户扮演多个角色
2.角色可以继承,可以包含其他角色
3.支持task,task就像角色一样
4.支持business rule(业务规则)
5.支持统一的operation名称检查(例如master的edit和author的edit,edit名称相同,但业务规则不同,author只能编辑自己的,但权限检查的时候依然用"edit"这个名称).

实现原理:
用户与AuthItem之间的关系约定:
1.AuthItem的定义: 角色,task,operation,统称AuthItem
2.mixin原则: 任何AuthItem可以有多个Child与之关联(把Child AuthItem mixin到某个AuthItem)
3.单项分配原则: 一个用户只能有一个"直接"的AuthItem与之关联

根据以上约定,则自然一个用户可以有多个AuthItem与之"间接"关联(可以解决一个用户多个角色的问题).
使用举例:读者可以阅读,作者可以创建,阅读,编辑他自己的帖子;编辑可以有作者的所有权限,还可以编辑所有人的,可以publish,master有编辑的所有权限,而且可以删除,具备create权限的人,就同时具备了创建帖子和评论的权限.问:master可以创建评论么?
$config=array(
'reader'=>array('read'),
'author'=>array('create','read', 'edit'=>'return $author_id==$user_id;'),
'editor'=>array('author','edit','publish'),
'master'=>array('editor','delete'),

'create'=>array('createPost','createComment')
);
$ar=new AuthRelationship($config);
echo (int)$ar->checkAccess('master', 'createPost', array('author_id'=>1, 'user_id'=>2));

你可以尝试其他各种checkAccess,比如author能否编辑,以及editor能否编辑,改变业务规则,或者让user_id=1等等...
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值