今天,總結一下,RBAC(基於角色的訪問控制),直白一點,就是權限管理。說到這,不得不「小敘」一下,我第一次node
開發權限管理功能的「插曲」。第一次作這個,真的不會,我只知道「有點印象」,當時任務落到個人身上,主管也是說個視頻
大概,至於「大概」是什麼,基本能夠忽略不計,無法,沒有參考,只有處處找資料,翻資料,後來仍是我在網上找到了開發
相關的視頻,(說到技術視頻,我不得不說,就算下載不少的視頻,別人就算講的再好,不必定挪到你那裏就好使,rem
就比如,說與作是兩碼事同樣,別人講視頻實際上是加深別人對知識點的理解,跟咋們聽衆盆友冒油半毛錢的關係,惟有it
下功夫,反覆敲打鍵盤,作到熟練,至於生巧,那又是另外一重境界。),呵呵呵,我是幸運的,按照視頻的講解,基本上,module
「copy」過來,還算順利,固然,中間也有一點「坑」,最後仍是趟過了。權限
說到RBAC,不得不說的五個表:用戶表(user),用戶角色表(role_user),角色表(role),節點表(node),權限表(access)下載
其中的關係是, 從這個圖表中,咱們不難看出它們之間的聯繫。im
用戶角色表是用戶表與角色表產生交集的關聯表,權限表也稱節點角色表,它是角色表與節點表關聯的表。技術
好的,先認識一下這些表的表結構:
/*-- --------------------------------------------------------CREATE TABLE IF NOT EXISTS `think_access` ( `role_id` smallint(6) unsigned NOT NULL, `node_id` smallint(6) unsigned NOT NULL, `level` tinyint(1) NOT NULL, `module` varchar(50) DEFAULT NULL, KEY `groupId` (`role_id`), KEY `nodeId` (`node_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;CREATE TABLE IF NOT EXISTS `think_node` ( `id` smallint(6) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `title` varchar(50) DEFAULT NULL, `status` tinyint(1) DEFAULT '0', `remark` varchar(255) DEFAULT NULL, `sort` smallint(6) unsigned DEFAULT NULL, `pid` smallint(6) unsigned NOT NULL, `level` tinyint(1) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `level` (`level`), KEY `pid` (`pid`), KEY `status` (`status`), KEY `name` (`name`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;CREATE TABLE IF NOT EXISTS `think_role` ( `id` smallint(6) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `pid` smallint(6) DEFAULT NULL, `status` tinyint(1) unsigned DEFAULT NULL, `remark` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`), KEY `pid` (`pid`), KEY `status` (`status`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;CREATE TABLE IF NOT EXISTS `think_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;*/