🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 类库路径 `extend/Rbac.php` ## 配置文件 配置文件路径:`application/admin/extra/rbac.php` 详细配置信息: ``` return [ // RBAC 权限验证 'user_auth_on' => true, // 是否开启认证 'user_auth_type' => 2, // 默认认证类型 1 - 登录认证 | 2 - 实时认证 'user_auth_key' => 'auth_id', // 用户认证 SESSION 标记 'admin_auth_key' => 'administrator', 'user_auth_model' => 'AdminUser', // 默认验证数据表模型 'user_auth_gateway' => 'Pub/login', // 默认认证网关 'not_auth_controller' => '', // 默认无需认证控制器 'require_auth_controller' => '', // 默认需要认证控制器 'not_auth_action' => '', // 默认无需认证方法 'require_auth_action' => '', // 默认需要认证方法 'common_auth_name' => 'common', // 公共授权控制器名称和方法名称 'guest_auth_on' => false, // 是否开启游客授权访问 'guest_auth_id' => 0, // 游客的用户ID 'role_table' => 'admin_role', // 角色表名称,不包含表前缀 'user_table' => 'admin_role_user', // 用户角色关系表名称,不包含表前缀 'access_table' => 'admin_access', // 权限表名称,不包含表前缀 'node_table' => 'admin_node', // 节点表名称,不包含表前缀 ]; ``` >[info] 配置认证控制器时多级控制器需要使用点语法 ## 数据库 >[info] 所有的表都在 tpadmin.sql 文件中,不需要再次新建 ### admin_user 表 ``` CREATE TABLE `tp_admin_user` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `account` char(32) NOT NULL, `realname` varchar(255) NOT NULL, `password` char(32) NOT NULL, `last_login_time` int(11) unsigned NOT NULL DEFAULT '0', `last_login_ip` char(15) NOT NULL, `login_count` mediumint(8) unsigned NOT NULL DEFAULT '0', `email` varchar(50) NOT NULL, `mobile` char(11) NOT NULL, `remark` varchar(255) NOT NULL, `status` tinyint(1) unsigned NOT NULL DEFAULT '1', `isdelete` tinyint(1) unsigned NOT NULL DEFAULT '0', `create_time` int(11) unsigned NOT NULL, `update_time` int(11) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `accountpassword` (`account`,`password`) ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC ``` ### admin_role 表 ``` CREATE TABLE `tp_admin_role` ( `id` smallint(6) unsigned NOT NULL AUTO_INCREMENT, `pid` smallint(6) unsigned NOT NULL, `name` varchar(20) NOT NULL, `remark` varchar(255) NOT NULL, `status` tinyint(1) unsigned NOT NULL DEFAULT '1', `isdelete` tinyint(1) unsigned NOT NULL DEFAULT '0', `create_time` int(11) unsigned NOT NULL, `update_time` int(11) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `parentId` (`pid`), KEY `status` (`status`), KEY `isdelete` (`isdelete`) ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC ``` ### admin_role_user 表 ``` CREATE TABLE `tp_admin_role_user` ( `role_id` mediumint(9) unsigned DEFAULT NULL, `user_id` char(32) DEFAULT NULL, KEY `group_id` (`role_id`), KEY `user_id` (`user_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED ``` ### admin_node 表 ``` CREATE TABLE `tp_admin_node` ( `id` smallint(6) unsigned NOT NULL AUTO_INCREMENT, `pid` smallint(6) unsigned NOT NULL, `group_id` tinyint(3) unsigned NOT NULL DEFAULT '0', `name` varchar(20) NOT NULL, `title` varchar(50) NOT NULL, `remark` varchar(255) NOT NULL, `level` tinyint(1) unsigned NOT NULL, `type` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '节点类型,1-控制器 | 0-方法', `sort` smallint(6) unsigned NOT NULL, `status` tinyint(1) NOT NULL DEFAULT '0', `isdelete` tinyint(1) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `level` (`level`), KEY `pid` (`pid`), KEY `status` (`status`), KEY `name` (`name`), KEY `isdelete` (`isdelete`), KEY `sort` (`sort`), KEY `group_id` (`group_id`) ) ENGINE=MyISAM AUTO_INCREMENT=59 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC ``` ### admin_access 表 ``` CREATE TABLE `tp_admin_access` ( `role_id` smallint(6) unsigned NOT NULL, `node_id` smallint(6) unsigned NOT NULL, `level` tinyint(1) unsigned NOT NULL, `pid` smallint(6) unsigned NOT NULL, KEY `groupId` (`role_id`), KEY `nodeId` (`node_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC ``` ## 其他表 ### admin_group 表 > 该表用于对节点进行分组,不涉及权限管理,实际上不属于 Rbac 权限管理的范畴,但本框架需要使用它对节点进行分组管理 ``` CREATE TABLE `tp_admin_group` ( `id` smallint(3) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `icon` varchar(255) NOT NULL COMMENT 'icon小图标', `sort` int(11) unsigned NOT NULL DEFAULT '0', `status` tinyint(1) unsigned NOT NULL DEFAULT '0', `remark` varchar(255) NOT NULL, `isdelete` tinyint(1) unsigned NOT NULL DEFAULT '0', `create_time` int(11) unsigned NOT NULL, `update_time` int(11) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `sort` (`sort`) ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC ```