Golang 開(kāi)發(fā)企業(yè)級(jí)資源權(quán)限管理【第一步表設(shè)計(jì)】

我們做企業(yè)級(jí)系統(tǒng)杂抽,權(quán)限控制主要分三類(lèi)。

【功能權(quán)限】:對(duì)菜單欄目進(jìn)行權(quán)限控制韩脏,查詢(xún)缩麸,增加,刪除赡矢,修改功能杭朱,一般來(lái)說(shuō)這種對(duì)資源的權(quán)限控制模型可以做到比較統(tǒng)一(用戶(hù)、角色吹散、資源)弧械。

【數(shù)據(jù)權(quán)限】:哪些人能看到哪些數(shù)據(jù),例如淘寶本人只能看自己訂單空民,北京地區(qū)部門(mén)領(lǐng)導(dǎo)可以看到電器類(lèi)部門(mén)訂單刃唐, 最高領(lǐng)導(dǎo)能看到人所有訂單等等。 這種跟業(yè)務(wù)高度相關(guān),(網(wǎng)絡(luò)上資料暫時(shí)比較少)原理主要是對(duì)SQL語(yǔ)句添加where 條件

【字段權(quán)限】:訂單能看到哪些字段唁桩,如供應(yīng)商闭树,看不到內(nèi)部?jī)r(jià)、 出廠價(jià)等信息荒澡。 (網(wǎng)絡(luò)上資料暫時(shí)比較少)實(shí)現(xiàn)原理跟數(shù)據(jù)權(quán)限控制是一致的报辱。對(duì)SQL語(yǔ)句添加select 條件

這次,我們主要講解最常用的功能權(quán)限控制的實(shí)現(xiàn)過(guò)程单山,這類(lèi)WEB權(quán)限控制碍现,在任意后端語(yǔ)言上都可以實(shí)現(xiàn)Java、Golang米奸、PHP昼接、Nodejs、Python等等悴晰,主要理解其數(shù)據(jù)模型慢睡。

我們先看最終實(shí)現(xiàn)的功能效果。

1.角色管理頁(yè)面

image.png

這里可以新增角色铡溪,刪除角色漂辐, 注意的是,這里有一個(gè)最高權(quán)限角色超級(jí)管理員棕硫,不允許刪除髓涯,還有一個(gè)批量導(dǎo)入管理員默認(rèn)角色。

2.新增角色,編輯角色

image.png

這里把系統(tǒng)大部分資源路由進(jìn)入權(quán)限控制哈扮,說(shuō)的大部分是因?yàn)橛行╉?yè)面權(quán)限是不需要進(jìn)行控制纬纪,例如登陸、注冊(cè)滑肉、以及后臺(tái)一些下拉選項(xiàng)(讀取的數(shù)據(jù)庫(kù)接口)包各。

3.管理員列表

image.png

4.給管理員分配權(quán)限

image.png

涉及數(shù)據(jù)表

1.用戶(hù)表

用戶(hù)表主要增加字段 rolesId 角色I(xiàn)D,了解這個(gè)用戶(hù)是哪個(gè)角色靶庙。

2.角色表

角色表主要記錄這個(gè)角色的名稱(chēng)髓棋,描述

CREATE TABLE `t_roles` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL DEFAULT '' COMMENT '角色名稱(chēng)',
  `desc` varchar(50) NOT NULL DEFAULT '' COMMENT '描述',
  `createdAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10003 DEFAULT CHARSET=utf8mb4 COMMENT='角色表';

3.路由表

這個(gè)表主要添加平臺(tái)所有需要控制的路由方法,也可以不建表惶洲,寫(xiě)到配置文件里面,因?yàn)殚_(kāi)發(fā)完需要控制的權(quán)限是固定的膳犹。上圖:新增編輯角色恬吕,顯示的就是這個(gè)表的內(nèi)容

CREATE TABLE `t_roles_tree` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL DEFAULT '' COMMENT '路由名稱(chēng)',
  `path` varchar(50) NOT NULL COMMENT '路徑',
  `methods` varchar(50) NOT NULL COMMENT '方法',
  `createdAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `parentId` varchar(50) NOT NULL DEFAULT '' COMMENT '級(jí)別',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8mb4 COMMENT='系統(tǒng)所有路由表';

4.權(quán)限表

權(quán)限表記錄了,這個(gè)角色有哪些權(quán)限须床。 核心字段為 [角色I(xiàn)D铐料,資源url, 方法]。這里用casbin 實(shí)現(xiàn)钠惩,因?yàn)閏asbin封裝了很多驗(yàn)證函數(shù)柒凉,節(jié)省了一部分工作量。

CREATE TABLE `casbin_rule` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `p_type` varchar(255) NOT NULL DEFAULT '',
  `v0` varchar(255) NOT NULL DEFAULT '' COMMENT '角色',
  `v1` varchar(255) NOT NULL DEFAULT '' COMMENT 'Url',
  `v2` varchar(255) NOT NULL DEFAULT '' COMMENT '方法',
  `v3` varchar(255) NOT NULL DEFAULT '',
  `v4` varchar(255) NOT NULL DEFAULT '',
  `v5` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=48 DEFAULT CHARSET=utf8mb4;
權(quán)限邏輯.png

這一篇最后介紹下 Casbin是一個(gè)強(qiáng)大的篓跛、高效的開(kāi)源訪問(wèn)控制框架膝捞,其權(quán)限管理機(jī)制支持多種訪問(wèn)控制模型。并指出主流后端語(yǔ)言愧沟,目前Casbin權(quán)限控制支持的語(yǔ)言有Go Java Node.js PHP Python C# Delphi蔬咬,使用Casbin可以極大提高權(quán)限控制開(kāi)發(fā)效率。當(dāng)然你不用這個(gè)庫(kù)沐寺,自己設(shè)計(jì)表林艘,實(shí)現(xiàn)原理是一樣。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末混坞,一起剝皮案震驚了整個(gè)濱河市狐援,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌究孕,老刑警劉巖啥酱,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蚊俺,居然都是意外死亡懈涛,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)泳猬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)批钠,“玉大人,你說(shuō)我怎么就攤上這事得封÷裥模” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵忙上,是天一觀的道長(zhǎng)拷呆。 經(jīng)常有香客問(wèn)我,道長(zhǎng)疫粥,這世上最難降的妖魔是什么茬斧? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮梗逮,結(jié)果婚禮上项秉,老公的妹妹穿的比我還像新娘。我一直安慰自己慷彤,他們只是感情好娄蔼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布怖喻。 她就那樣靜靜地躺著,像睡著了一般岁诉。 火紅的嫁衣襯著肌膚如雪锚沸。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,692評(píng)論 1 305
  • 那天涕癣,我揣著相機(jī)與錄音哗蜈,去河邊找鬼。 笑死属划,一個(gè)胖子當(dāng)著我的面吹牛恬叹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播同眯,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼绽昼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了须蜗?” 一聲冷哼從身側(cè)響起硅确,我...
    開(kāi)封第一講書(shū)人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎明肮,沒(méi)想到半個(gè)月后菱农,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡柿估,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年循未,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秫舌。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡的妖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出足陨,到底是詐尸還是另有隱情嫂粟,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布墨缘,位于F島的核電站星虹,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏镊讼。R本人自食惡果不足惜宽涌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蝶棋。 院中可真熱鬧卸亮,春花似錦、人聲如沸嚼松。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)献酗。三九已至寝受,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間罕偎,已是汗流浹背很澄。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留颜及,地道東北人甩苛。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像俏站,于是被迫代替她去往敵國(guó)和親讯蒲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 前段時(shí)間分別用vue和react寫(xiě)了兩個(gè)后臺(tái)管理系統(tǒng)的模板vue-quasar-admin和3YAdmin肄扎。兩個(gè)項(xiàng)...
    若邪Y閱讀 3,025評(píng)論 2 32
  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說(shuō)明:當(dāng)在唯一索引所對(duì)應(yīng)的列上鍵入重復(fù)值時(shí)墨林,會(huì)觸發(fā)此異常。 O...
    我想起個(gè)好名字閱讀 5,320評(píng)論 0 9
  • 網(wǎng)絡(luò)層提供的兩種服務(wù) 在計(jì)算機(jī)網(wǎng)絡(luò)領(lǐng)域犯祠,網(wǎng)絡(luò)層應(yīng)該向運(yùn)輸層提供怎樣的服務(wù)(面向連接還是無(wú)連接)曾引起了長(zhǎng)期的爭(zhēng)論旭等,...
    srtianxia閱讀 3,967評(píng)論 0 12
  • 隨著開(kāi)學(xué)將近,很多家長(zhǎng)都趕緊拉著孩子到各個(gè)校服店購(gòu)買(mǎi)校服衡载,而就在8月中旬開(kāi)始搔耕,突然卷起校服漲價(jià)之風(fēng),后來(lái)投訴的人多...
    竹安倩閱讀 618評(píng)論 0 0
  • 娃從小沒(méi)有刷牙的習(xí)慣痰娱,我意識(shí)到刷牙的重要性弃榨,從她蛀牙,需要300元補(bǔ)一顆牙開(kāi)始猜揪。經(jīng)過(guò)近半年的習(xí)慣養(yǎng)成惭墓,她現(xiàn)在會(huì)把刷...
    増言心語(yǔ)閱讀 342評(píng)論 0 1