【RBAC基於角色的權限控制(一)】RBAC權限數據庫設計

-- 管理員->權限表
DROP TABLE IF EXISTS `b_admin_permissions`;
CREATE TABLE `b_admin_permissions` (
  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `name` varchar(64) NOT NULL DEFAULT '' COMMENT '權限名稱',
  `controller` varchar(32) NOT NULL DEFAULT '' COMMENT '控制器',
  `action` varchar(32) NOT NULL DEFAULT '' COMMENT '方法',
  `description` varchar(255) NOT NULL DEFAULT '' COMMENT '描述',
  `pid` int(10) NOT NULL DEFAULT '0' COMMENT '父ID 0-頂級',
  `level` tinyint(1) NOT NULL DEFAULT '0' COMMENT '權限級別:0-頂級 1-一級',
  `create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
  `is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否刪除 0-否 1-是',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '管理員->權限表';

-- 管理員->角色表
DROP TABLE IF EXISTS `b_admin_roles`;
CREATE TABLE `b_admin_roles` (
  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `name` varchar(64) NOT NULL DEFAULT '' COMMENT '角色名稱',
  `description` varchar(255) NOT NULL DEFAULT '' COMMENT '角色描述',
  `create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
  `is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否刪除 0-否 1-是',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '管理員->角色表';

-- 管理員->角色->權限表
DROP TABLE IF EXISTS `b_admin_role_permissions`;
CREATE TABLE `b_admin_role_permissions` (
  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `role_id` int(10) NOT NULL DEFAULT '0' COMMENT '角色ID',
  `permission_id` int(10) NOT NULL DEFAULT '0' COMMENT '權限ID',
  `create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
  `is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否刪除 0-否 1-是',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '管理員->角色->權限表';

-- 管理員表
DROP TABLE IF EXISTS `b_admins`;
CREATE TABLE `b_admins` (
  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `username` varchar(64) NOT NULL COMMENT '用戶名',
  `password` char(32) NOT NULL COMMENT '密碼',
  `nickname` varchar(32) NOT NULL DEFAULT '' COMMENT '暱稱',
  `realname` varchar(32) NOT NULL DEFAULT '' COMMENT '真實姓名',
  `role_id` int(10) NOT NULL COMMENT '角色ID 0-超級管理員',
  `create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
  `is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否刪除 0-否 1-是',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '管理員表';

-- 管理員->操作記錄表
DROP TABLE IF EXISTS `b_admin_operation_records`;
CREATE TABLE `b_admin_operation_records` (
  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `username` varchar(64) NOT NULL COMMENT '用戶名',
  `type` tinyint(1) NOT NULL DEFAULT '0' COMMENT '操作類型 0-未知 1-新增 2-修改 3-刪除',
  `module_name` varchar(64) NOT NULL DEFAULT '模塊名',
  `id_container` varchar(32) NOT NULL DEFAULT '' COMMENT '主鍵',
  `description` varchar(1000) NOT NULL DEFAULT '' COMMENT '操作描述',
  `remark` text DEFAULT NULL COMMENT '備註',
  `create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
  `is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否刪除 0-否 1-是',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '管理員->操作記錄表';

-- 管理員->會話表
DROP TABLE IF EXISTS `b_admin_sessions`;
CREATE TABLE `b_admin_sessions` (
  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `session` char(32) NOT NULL DEFAULT '' COMMENT '會話ID',
  `login_ip` char(15) NOT NULL DEFAULT '' COMMENT '登錄IP',
  `login_time` datetime NOT NULL DEFAULT '0000-01-01 00:00:00' COMMENT '登錄時間',
  `admin_id` int(10) NOT NULL DEFAULT '0' COMMENT '管理員ID',
  `create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
  `is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否刪除 0-否 1-是',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_session` (`session`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '管理員->會話表';

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章