在之前我们已经了解了think3.2Rbac的权限管理操作,但是在thinkPHP5中thinkPHP没有内置Rabc操作,所以我们需要使用一个thinkPHP的Rbac拓展来实现权限管理,在thinkPHP中我们可以使用gmars/tp5-rbac
拓展来实现权限管理
gmars/tp5-rbac地址: https://packagist.org/package...
一:gmars/tp5-rbac安装
composer require gmars/tp5-rbac
二:gmars/tp5-rbac使用
1:Rbac数据库创建
在gmars/tp5-rbac
中我们需要使用到六张表,分别为:权限节点表(permission),permission_category(权限分组表),role(角色表),role_permission
(角色权限关联表),user(用户表),user_role(用户角色关联表)
当我们使用composer将gmars/tp5-rbac
下载下来之后,我们可以发现在vendorgmarstp5-rbac
目录下有一个gmars_rbac.sql
文件,此文件内就为我们所需要创建表的sql
下面sql中###为你的表前缀,下面只是展示我们呢所需要的表sql,创建表gmars/tp5-rbac
提供了方法来帮我们自动创建我们所需要的表
//实例化rbac $rbac = new Rbac(); //初始化rbac所需的表,可传入参数$db为数据库配置项默认为空则为默认数据库(考虑到多库的情形) $rbac->createTable();
上面的方法会生成rbac所需要的表,一般只执行一次,为了安全,执行后会加锁,下次要执行需要删除锁文件再执行
(1):权限节点表(permission)
DROP TABLE IF EXISTS `###permission`; CREATE TABLE `###permission` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL DEFAULT '' COMMENT '权限节点名称', `type` smallint(4) unsigned NOT NULL DEFAULT '0' COMMENT '权限类型1api权限2前路由权限', `category_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '权限分组id', `path` varchar(100) NOT NULL DEFAULT '' COMMENT '权限路径', `path_id` varchar(100) NOT NULL DEFAULT '' COMMENT '路径唯一编码', `description` varchar(200) NOT NULL DEFAULT '' COMMENT '描述信息', `status` smallint(4) unsigned NOT NULL DEFAULT '0' COMMENT '状态0未启用1正常', `create_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_permission` (`path_id`,`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='权限节点表';
(2):permission_category(权限分组表
SET FOREIGN_KEY_CHECKS=0; DROP TABLE IF EXISTS `###permission_category`; CREATE TABLE `###permission_category` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '权限分组名称', `description` varchar(200) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '权限分组描述', `status` smallint(4) unsigned NOT NULL DEFAULT '1' COMMENT '权限分组状态1有效2无效', `create_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '权限分组创建时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT '权限分组表';
内容版权声明:除非注明,否则皆为本站原创文章。