PHP之後臺使用者許可權管理設計
阿新 • • 發佈:2019-01-29
關於許可權管理資料庫需要用到多少張表這個問題,網上有的說是建立六張表,有的說建立五張表,其實大同小異,根據你自己設計的表字段。不過建立五張表:使用者表,角色表,許可權表(即後來的選單表),使用者角色表,許可權角色表。是最容易讓新人理解的。
我是建立了四張表。
使用者表(我把後面的使用者角色表整合到一個使用者表上了,所以少建一張表)
db_adminuser | CREATE TABLE `db_adminuser` (
`a_id` tinyint(4) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵',
`a_gid` tinyint(4) NOT NULL COMMENT '所屬群組(關聯群組表-db_admingroup)',
`a_account` varchar(30) NOT NULL COMMENT '管理員賬號',
`a_password` varchar(32) NOT NULL COMMENT '登陸密碼',
`a_department` varchar(30) DEFAULT NULL COMMENT '部門',
`a_username` varchar(20) NOT NULL COMMENT '管理員姓名',
`a_number` varchar(30) DEFAULT NULL COMMENT '工號',
`a_tel` varchar(20) DEFAULT NULL COMMENT '聯絡電話',
`a_logtime` int(11) NOT NULL COMMENT '最後登入時間',
`a_logip` varchar(25) NOT NULL COMMENT '最後登入IP',
`a_ispermit` enum('0','1') NOT NULL DEFAULT '0' COMMENT '是否禁止 0:未,1:禁止登陸',
`a_regtime` int(11) NOT NULL COMMENT '註冊時間',
`shopid` int(11) DEFAULT '0' COMMENT '店鋪ID',
`a_recly` enum('0','1') NOT NULL DEFAULT '0' COMMENT '是否回收 0代表沒有回收 1代表回收',
PRIMARY KEY (`a_id`),
UNIQUE KEY `a_account` (`a_account`)
) ENGINE=MyISAM AUTO_INCREMENT=154 DEFAULT CHARSET=utf8 COMMENT='使用者員表';
角色表:
db_admingroup | CREATE TABLE `db_admingroup` (
`g_id` tinyint(4) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵',
`g_name` varchar(30) NOT NULL COMMENT '角色名稱',
`g_description` varchar(50) NOT NULL COMMENT '角色描述',
`status` enum('1','0') NOT NULL DEFAULT '0' COMMENT '是否禁止 0:未,1:禁止登陸',
PRIMARY KEY (`g_id`)
) ENGINE=MyISAM AUTO_INCREMENT=34 DEFAULT CHARSET=utf8 COMMENT='角色表' ;
許可權表
db_menu | CREATE TABLE `db_menu` (
`m_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵',
`m_pid` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '父ID,為0為頂級分類',
`m_name` varchar(30) NOT NULL COMMENT '許可權英文名字',
`m_url` varchar(100) NOT NULL COMMENT '許可權URL',
`m_level` tinyint(3) NOT NULL DEFAULT '1' COMMENT '層次',
`status` enum('0','1') NOT NULL DEFAULT '1' COMMENT '是否顯示(0:不顯示,1:顯示)',
`m_remark` varchar(32) DEFAULT NULL COMMENT '樣式備註',
`m_title` varchar(32) DEFAULT NULL COMMENT '許可權中文名字',
`m_sort` tinyint(2) DEFAULT NULL COMMENT '排序',
PRIMARY KEY (`m_id`)
) ENGINE=MyISAM AUTO_INCREMENT=494 DEFAULT CHARSET=utf8 COMMENT='許可權表' ;
角色許可權表
db_access | CREATE TABLE `db_access` (
`a_gid` int(10) NOT NULL DEFAULT '0' COMMENT '角色id',
`a_mid` int(10) NOT NULL DEFAULT '0' COMMENT '許可權id',
`level` tinyint(2) DEFAULT NULL COMMENT '層次',
`module` varchar(32) DEFAULT NULL COMMENT '模組'
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT '角色許可權表';
以上是我用到的表。
大體設計思路是。
1 建立角色,例如:管理員
2 建立使用者 隸屬於哪個組
3 新增許可權
4 給角色分配許可權
5 然後關聯表 得到某個使用者所具有的許可權
我是建立了四張表。
使用者表(我把後面的使用者角色表整合到一個使用者表上了,所以少建一張表)
db_adminuser | CREATE TABLE `db_adminuser` (
`a_id` tinyint(4) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵',
`a_gid` tinyint(4) NOT NULL COMMENT '所屬群組(關聯群組表-db_admingroup)',
`a_account` varchar(30) NOT NULL COMMENT '管理員賬號',
`a_password` varchar(32) NOT NULL COMMENT '登陸密碼',
`a_department` varchar(30) DEFAULT NULL COMMENT '部門',
`a_username` varchar(20) NOT NULL COMMENT '管理員姓名',
`a_number` varchar(30) DEFAULT NULL COMMENT '工號',
`a_tel` varchar(20) DEFAULT NULL COMMENT '聯絡電話',
`a_logtime` int(11) NOT NULL COMMENT '最後登入時間',
`a_logip` varchar(25) NOT NULL COMMENT '最後登入IP',
`a_ispermit` enum('0','1') NOT NULL DEFAULT '0' COMMENT '是否禁止 0:未,1:禁止登陸',
`a_regtime` int(11) NOT NULL COMMENT '註冊時間',
`shopid` int(11) DEFAULT '0' COMMENT '店鋪ID',
`a_recly` enum('0','1') NOT NULL DEFAULT '0' COMMENT '是否回收 0代表沒有回收 1代表回收',
PRIMARY KEY (`a_id`),
UNIQUE KEY `a_account` (`a_account`)
) ENGINE=MyISAM AUTO_INCREMENT=154 DEFAULT CHARSET=utf8 COMMENT='使用者員表';
角色表:
db_admingroup | CREATE TABLE `db_admingroup` (
`g_id` tinyint(4) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵',
`g_name` varchar(30) NOT NULL COMMENT '角色名稱',
`g_description` varchar(50) NOT NULL COMMENT '角色描述',
`status` enum('1','0') NOT NULL DEFAULT '0' COMMENT '是否禁止 0:未,1:禁止登陸',
PRIMARY KEY (`g_id`)
) ENGINE=MyISAM AUTO_INCREMENT=34 DEFAULT CHARSET=utf8 COMMENT='角色表' ;
許可權表
db_menu | CREATE TABLE `db_menu` (
`m_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵',
`m_pid` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '父ID,為0為頂級分類',
`m_name` varchar(30) NOT NULL COMMENT '許可權英文名字',
`m_url` varchar(100) NOT NULL COMMENT '許可權URL',
`m_level` tinyint(3) NOT NULL DEFAULT '1' COMMENT '層次',
`status` enum('0','1') NOT NULL DEFAULT '1' COMMENT '是否顯示(0:不顯示,1:顯示)',
`m_remark` varchar(32) DEFAULT NULL COMMENT '樣式備註',
`m_title` varchar(32) DEFAULT NULL COMMENT '許可權中文名字',
`m_sort` tinyint(2) DEFAULT NULL COMMENT '排序',
PRIMARY KEY (`m_id`)
) ENGINE=MyISAM AUTO_INCREMENT=494 DEFAULT CHARSET=utf8 COMMENT='許可權表' ;
角色許可權表
db_access | CREATE TABLE `db_access` (
`a_gid` int(10) NOT NULL DEFAULT '0' COMMENT '角色id',
`a_mid` int(10) NOT NULL DEFAULT '0' COMMENT '許可權id',
`level` tinyint(2) DEFAULT NULL COMMENT '層次',
`module` varchar(32) DEFAULT NULL COMMENT '模組'
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT '角色許可權表';
以上是我用到的表。
大體設計思路是。
1 建立角色,例如:管理員
2 建立使用者 隸屬於哪個組
3 新增許可權
4 給角色分配許可權
5 然後關聯表 得到某個使用者所具有的許可權
注意:以上基本上部分先後順序。
以上只是自己的體會,只是想記錄下自己的程式設計之旅。