ThinkPHP的RBAC权限控制

来源:互联网 发布:安卓登录注册界面源码 编辑:程序博客网 时间:2024/06/05 05:57
ThinkPHP的RBAC权限控制:

登录验证:
if($username == C('RBAC_SUPERADMIN')){ //判断是否为超级管理员
session(C('ADMIN_AUTH_KEY'),true);//超级管理员保存为true
}
session(C('USER_AUTH_KEY'),$id); //把用户登录id保存到session中,用于下面检测权限
$rbac = new \Org\Util\Rbac; //导入RBAC类
$rbac->saveAccessList();//根据用户登录的id检测权限,保存到session中
//var_dump($_SESSION);打印生成的session用于调试

注意:
saveAccessList();检测权限,生成的session为空:
1、如果有超级管理员生成的session,则该函数返回空,
2、注意think_node节点表的level值(1、2、3)层级关系必须正确,
3、注意think_access权限表的node_id必须有从上至下的层级关系(如,每个角色必须有level=1的节点),所以在配置角色权限保存时注意,
4、think_role角色表的status值为1,状态开启

配置文件:定位到Home-Conf-config.php
//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' => 'Index', //无需认证的控制器
'NOT_AUTH_ACTION' => '', //无需认证的方法
'RBAC_ROLE_TABLE' => 'think_role', //角色表名称
'RBAC_USER_TABLE' => 'think_role_user', //角色与用户的中间表名称
'RBAC_ACCESS_TABLE' => 'think_access', //权限表名称
'RBAC_NODE_TABLE' => 'think_node', //节点表名称

继承Base类,调用控制器中方法时,先验证是否有权限

0 0
原创粉丝点击