phprbac权限管理
㈠ thinkphp 3.2.3 rbac 超级管理员可登录 其他提示没有权限
你要在数据库中给登录的用户添加权限的,没权限当然不能访问了。这个RBAC的原理是先判断是不是超级管理员,如果是的话就跳过权限认证的,所以就算没配置你管理员的那个用户的权限他也能访问的,其他用户向你的数据表里加权限就行了
㈡ php用户权限分配界面
说一下我的思路(RBAC 模式),供你参考,邮箱不发了,由于数据库需要保密,截图也不贴了。
你在左侧导航栏做三个菜单项,分别是:
1. 用户管理
2. 角色管理
3. 权限管理
其中 1 和 2 给管理员操作,管理员可以对其进行增删改查等操作;3 由软件开发者操作,不能分配给管理员;普通用户对 1、2、3 都无权操作。
权限管理界面,软件开发者可以对各种权限进行增删改查;
角色管理界面,管理员进去后可以对角色进行增册改查操作;具体可以这样安排界面,右栏主区分成上中下三块,上面这块提供添加及查询操作,中间块显示查询结果,下面这块查询结果中某条记录的明细。 增加按钮点击后,在明细区出现填写表单,具体需要填哪些内容由开发者定,一般角色名为必填项,然后同时在右边给出一个选择权限的列表,提供复选框让管理员为角色勾选分配权限;
用户管理界面跟角色界面类似,只是管理员在创建用户时是勾选角色而不是权限。
大体思路就是这样。
(PS: 数据库中当然要先设计好用户表、角色表、权限表、用户角色关联表、角色权限关联表等等)
㈢ ThinkPHP中RBAC权限控制求助
权限配置文件:
//超级管理员
'RBAC_SUPERADMIN' => 'admin', //超级管理名称
'ADMIN_AUTH_KEY' => 'superadmin', //超级管理识别
'USER_AUTH_ON' => true, //开启验证
'USER_AUTH_TYPE' => 1, //验证类型(1登录验证,2实时验证)
'USER_AUTH_KEY' => 'uid', //用户认证识别号
'NOT_AUTH_MODULE' => 'User', //不验证的控制器
'NOT_AUTH_ACTION' => '',//不验证的action
'RBAC_ROLE_TABLE' => 'lx_role', //角色表名称
'RBAC_USER_TABLE' => 'lx_role_user', //用户关联表
'RBAC_ACCESS_TABLE' => 'lx_access', //权限表
'RBAC_NODE_TABLE' => 'lx_node', //节点表
复制代码
test用户给的权限:
Index控制器的index方法允许
Baoji控制器的所有方法允许访问
但当我登录该用户点击baoji控制器下的remark时 报无权限 求高手提点提点....
import('ORG.Util.RBAC');
RBAC::saveAccessList();
p($_SESSION);
复制代码
下面是结果
Array
(
[verify] =>
[uid] => 5
[username] => test
[last_login_time] => 1376992491
[last_login_ip] => 127.0.0.1
[_ACCESS_LIST] => Array
(
[DEFAULT] => Array
(
[INDEX] => Array
(
[INDEX] => 31
)
[BAOJI] => Array
(
[INDEX] => 40
[REMARK] => 41
[VIEW] => 42
[SUBMIT] => 43
)
)
)
)
复制代码
这是权限判断的代码
$notAuth=in_array(MODULE_NAME, explode(',', C('NOT_AUTH_MODULE'))) ||
in_array(ACTION_NAME, explode(',', C('NOT_AUTH_ACTION')));
if(C('USER_AUTH_ON') and !$notAuth){
import('ORG.Util.RBAC');
RBAC::AccessDecision()||$this->error('没有权限');
}
㈣ thinkphp的auth权限和rbac有什么区别
相同点:
1.两种都是基于角色权限控制
2.都是同一个用户可属于多个角色或用户组
不同点:
Rbac:
1.Rbac是基于节点控制,根据3级节点,mole,controller,action,节点类似与树形结构,3级节点间相互有关联
2.表关系:用户表->用户角色关联表->角色表->角色节点关联表->节点表
3.根据3级节点控制,粒度到操作action,每个节点为单一的模块,控制器或操作
Auth:
1.Auth是基于规则控制,定制规则和条件表达式 ,每一条规则都是独立的
2.表关系:用户表->用户和用户组关联表->用户组表->规则表
3.根据规则控制,可自由定制不同的规则,非常自由,同一个规则内可以定制多个不同节点(中间的关系:OR AND)
4.可定制规则表达式,比如定制积分表达式
想法和问题:
Auth:
1.Auth验证多条规则时条件表达式不起效果
2.Auth官方例子只说一个根据积分的规则,假如我规则"Admin/Goods/goodsList,Admin/Goods/goodsDel"我
能不能定义这里面的某些ID所属角色操作权限的规则表达式,而这些所属角色id是goods表里的某个字段,可能所属的角色是多个不同的角色?
3.Auth不支持"Admin/*"泛解析,因为他每一条规则都是独立的
4.对菜单,页面,按钮类的显示使用Auth会必Rbac更好更方便
Rbac:
1.新手配置Rbac的时候经常出现 Rbac $_SESSION['_access_list'] 获取不到的问题,因为Rbac是使用ThinkPHP的底层DB引擎DSN连接数据库,需要配置数据库链接和5个表的关系,字段名和表名不能出现问题
2.允许完成"Admin/*"类型的泛解析,比如这里直接定制一个Admin模块的节点,不要下级节点就可以了
通用:
1.不管是Rbac的角色表或者Auth里面的用户组表也好,都可以扩展,比如对角色或用户组进行多层分级
2.Rbac的节点和Auth的规则都可以进行分级,比如前端功能权限,后端功能权限,后端某个功能模块权限等等
3.上面两个东西都不能应用到权限管控之中去,比如Rbac不能分享上级角色权限,Auth用户组也不能,但是能更好的管理和更加流程化的操作.
㈤ php权限管理如何实现
我得做法是,用形如:
修改文章,1,删除文章,1,新增文章,1
这样的字符串来保存权限值
读取后explode为数组,需要校验权限的时候,用
if($array["修改文章"])
判断是否有权限。