這個(gè)基于Gin + Vue + Element UI的前后端分離權(quán)限管理系統(tǒng),真香!

在進(jìn)入今日的正題之前,先來了解一下前后端分離權(quán)限管理系統(tǒng)。
在傳統(tǒng)的前后端不分的開發(fā)中,權(quán)限管理主要通過過濾器或者攔截器來進(jìn)行,當(dāng)然,權(quán)限管理框架本身也是通過過濾器來實(shí)現(xiàn)。如果用戶不具備某一個(gè)角色或者某一個(gè)權(quán)限,則無法訪問某一個(gè)頁面。
但是在前后端分離中,頁面的跳轉(zhuǎn)全都交給前端去做,后端只提供數(shù)據(jù),這種時(shí)候,權(quán)限管理就不能再按照之前的思路來設(shè)計(jì)了。
我們都知道,前端是展示給用戶看的,所有的菜單,不管是顯示的還是隱式的并不是為了實(shí)現(xiàn)權(quán)限管理,而是為了給用戶一個(gè)良好的體驗(yàn)。在所有的系統(tǒng)設(shè)計(jì)中,并不是依賴前端隱藏控件來實(shí)現(xiàn)權(quán)限管理的,后端才能真正地確保數(shù)據(jù)完整性。
后端在設(shè)計(jì)的過程中就要確保每一個(gè)接口都是在滿足某種權(quán)限的基礎(chǔ)上才能訪問。也就是說,不怕將后端數(shù)據(jù)接口暴露出來,即使暴露出來,只要你沒有相應(yīng)的角色,也是訪問不了的。
有人說,如果用戶直接在地址欄輸入某一個(gè)頁面的路徑,怎么辦?此時(shí)如果沒有過任何額外處理的話,用戶確實(shí)可以通過直接輸入某一個(gè)路徑進(jìn)入到系統(tǒng)的某一個(gè)頁面中。但是,不用擔(dān)心數(shù)據(jù)泄露問題,因?yàn)闆]有相關(guān)的角色,就無法訪問相關(guān)的接口。
如果用戶非這樣操作,進(jìn)入到一個(gè)空白的頁面,導(dǎo)致用戶體驗(yàn)不好,這個(gè)時(shí)候我們可以使用Vue中的路由導(dǎo)航守衛(wèi),來監(jiān)聽頁面跳轉(zhuǎn),如果用戶想要去一個(gè)未獲授權(quán)的頁面,則直接在前置路由導(dǎo)航守衛(wèi)將之?dāng)r截下來,重定向登錄頁,或者直接就停留在當(dāng)前頁,不讓用戶跳轉(zhuǎn)。
總之,前端的所有操作,都是為了提高用戶體驗(yàn),真正的數(shù)據(jù)安全要在后端來做。后端中的權(quán)限管理為每個(gè)角色統(tǒng)一了一種路徑。
今天推薦的這個(gè)前后端分離權(quán)限管理系統(tǒng),是基于 Gin + Vue + Element UI 實(shí)現(xiàn)的。系統(tǒng)初始化也極其簡(jiǎn)單,只需要在配置文件中,修改數(shù)據(jù)庫連接,系統(tǒng)啟動(dòng)后會(huì)自動(dòng)初始化數(shù)據(jù)庫信息以及必須的基礎(chǔ)數(shù)據(jù)。
這個(gè)是在線體驗(yàn)登錄界面:

這個(gè)前后端權(quán)限管理系統(tǒng)的特性:
遵循 RESTful API 設(shè)計(jì)規(guī)范
基于 GIN WEB API 框架,提供了豐富的中間件支持(用戶認(rèn)證、跨域、訪問日志、追蹤ID等)
基于Casbin的 RBAC 訪問控制模型
JWT 認(rèn)證
支持 Swagger 文檔(基于swaggo)
基于 GORM 的數(shù)據(jù)庫存儲(chǔ),可擴(kuò)展多種類型數(shù)據(jù)庫
配置文件簡(jiǎn)單的模型映射,快速能夠得到想要的配置
代碼生成工具
表單構(gòu)建工具
多命令模式
TODO: 單元測(cè)試
這個(gè)系統(tǒng)內(nèi)置了這些功能:
用戶管理:用戶是系統(tǒng)操作者,該功能主要完成系統(tǒng)用戶配置。
部門管理:配置系統(tǒng)組織機(jī)構(gòu)(公司、部門、小組),樹結(jié)構(gòu)展現(xiàn)支持?jǐn)?shù)據(jù)權(quán)限。
崗位管理:配置系統(tǒng)用戶所屬擔(dān)任職務(wù)。
菜單管理:配置系統(tǒng)菜單,操作權(quán)限,按鈕權(quán)限標(biāo)識(shí)等。
角色管理:角色菜單權(quán)限分配、設(shè)置角色按機(jī)構(gòu)進(jìn)行數(shù)據(jù)范圍權(quán)限劃分。
字典管理:對(duì)系統(tǒng)中經(jīng)常使用的一些較為固定的數(shù)據(jù)進(jìn)行維護(hù)。
參數(shù)管理:對(duì)系統(tǒng)動(dòng)態(tài)配置常用參數(shù)。
操作日志:系統(tǒng)正常操作日志記錄和查詢;系統(tǒng)異常信息日志記錄和查詢。
登錄日志:系統(tǒng)登錄日志記錄查詢包含登錄異常。
系統(tǒng)接口:根據(jù)業(yè)務(wù)代碼自動(dòng)生成相關(guān)的api接口文檔。
代碼生成:根據(jù)數(shù)據(jù)表結(jié)構(gòu)生成對(duì)應(yīng)的增刪改查相對(duì)應(yīng)業(yè)務(wù),全部可視化編程,基本業(yè)務(wù)可以0代碼實(shí)現(xiàn)。
表單構(gòu)建:自定義頁面樣式,拖拉拽實(shí)現(xiàn)頁面布局。
服務(wù)監(jiān)控:查看一些服務(wù)器的基本信息。
系統(tǒng)設(shè)計(jì)架構(gòu)框圖:

作者還錄制了項(xiàng)目的使用教程視頻。

最后貼上GitHub項(xiàng)目地址,來自go-admin-team的良心巨作:
https://github.com/go-admin-team/go-admin
關(guān)注GitHub今日熱榜,專注挖掘好用的開發(fā)工具,致力于分享優(yōu)質(zhì)高效的工具、資源、插件等,助力開發(fā)者成長(zhǎng)!
點(diǎn)個(gè)在看 你最好看

