基于ASP.Net Core开发的一套通用后台框架
基于ASP.Net Core開發(fā)一套通用后臺框架
寫在前面
這是本人在學(xué)習(xí)的過程中搭建學(xué)習(xí)的框架,如果對你有所幫助那再好不過。如果您有發(fā)現(xiàn)錯誤,請告知我,我會第一時間修改。
知其然,知其所以然,并非重復(fù)的造輪子。因為這段時間我發(fā)現(xiàn),自己悶很久寫出來的代碼,再去看看別人的,會有種恍然大悟的感覺。不是只會用,而不知道為什么要這樣用。
真的,只看不敲,總是學(xué)不會。
Demo地址:http://app.guoddy.com
源代碼地址:https://github.com/jellydong/LJDAPP
數(shù)據(jù)并不會真實保存,設(shè)定的為測試模式,所以免登錄。
開發(fā)工具
1.Visual Studio 2019
2.SQL Server 2017
3.Power Design
總體效果
主頁
菜單管理
)
角色管理及權(quán)限配置
權(quán)限設(shè)計&Why
我這里主要涉及七個表,四個數(shù)據(jù)表,三個關(guān)聯(lián)表。
為什么這樣設(shè)計,我覺得可能這是大多數(shù)系統(tǒng)的需求。
1.用戶和角色多對多,一個用戶可以擁有多個角色,不然設(shè)計角色就沒有了意義,實際可能一個人身兼數(shù)職。
2.可以直接給用戶授予或取消授予某個權(quán)限。這個可能會有人覺得沒必要,所以如果不涉及這個,那就是五個表。但是我這里保留,因為很多情況下,這是很正常的需求。
3.菜單可以無限級別,根據(jù)實際需求,修改系統(tǒng)配置參數(shù)。
詳細(xì)說明
ObjectID、Remark、Status、CreatedBy、CreatedTime、ModifiedBy、ModifiedTime、Sort是默認(rèn)字段。
SysUserInfo用戶表
- 如果用戶數(shù)據(jù)量大的話,實際這個表只需要保留ObjectID、ULoginName、ULoginPWD就可以了,這樣可以提高速度,沒必要把所有信息都保存起來。
- 用戶和角色多對多 R_sysUserInfo_sysRole
- 用戶和權(quán)限項多對多(直接授權(quán)或禁止) R_UserPermissions
| ObjectID | 主鍵 | nvarchar(50) | TRUE |
| ULoginName | 用戶名 | nvarchar(20) | |
| ULoginPWD | 密碼 | nvarchar(50) | |
| URealName | 真實姓名 | nvarchar(10) | |
| UTelphone | 電話 | nvarchar(20) | |
| UMobile | 手機(jī)號 | nvarchar(11) | |
| UEmail | nvarchar(50) | ||
| UQQ | nvarchar(20) | ||
| UGender | 性別:0-女;1-男;2-保密 | int | |
| UDepID | 所屬部門 | nvarchar(50) | |
| Remark | 備注 | nvarchar(500) | |
| Status | 狀態(tài):0-啟用;1-禁用 | int | |
| CreatedBy | 創(chuàng)建人 | nvarchar(50) | |
| CreatedTime | 創(chuàng)建時間 | datetime | |
| ModifiedBy | 修改人 | nvarchar(50) | |
| ModifiedTime | 修改時間 | datetime | |
| Sort | 排序值 | int |
SysRole角色表
- 對角色的分類,比如管理員、普通用戶等。
- 角色用戶多對多 R_sysUserInfo_sysRole
- 角色權(quán)限多對多 R_RolePermission
| ObjectID | 主鍵 | nvarchar(50) | TRUE |
| RName | 角色名稱 | varchar(50) | |
| Remark | 備注 | nvarchar(500) | |
| Status | 狀態(tài):0-啟用;1-禁用 | int | |
| CreatedBy | 創(chuàng)建人 | nvarchar(50) | |
| CreatedTime | 創(chuàng)建時間 | datetime | |
| ModifiedBy | 修改人 | nvarchar(50) | |
| ModifiedTime | 修改時間 | datetime | |
| Sort | 排序值 | int |
SysMenus菜單表
- 菜單表 是一開始設(shè)計好后,改動最多的一個表。后續(xù)在開發(fā)過程中增加了IsLast、Hierarchy;去除了MAction
- IsLast用來標(biāo)記是不是最后一級,如果是最后一級我們給自動增加增刪改等默認(rèn)方法。
- Hierarchy用來標(biāo)記層級,前面我們說可以做到無限極,但是通常情況下會是三級,所以這個需要根據(jù)實際設(shè)定系統(tǒng)參數(shù),維護(hù)的時候檢查限制即可。
- IsMenuShow是否作為菜單顯示,也就是左側(cè)菜單遞歸的,因為有部分API不需要作為菜單顯示,并且授權(quán)的方式也會不一樣。
- 菜單角色多對多 R_RolePermission
- 菜單權(quán)限項一對多
| ObjectID | 主鍵 | nvarchar(50) | TRUE |
| MName | 名稱 | nvarchar(100) | |
| MUrl | URL | nvarchar(100) | |
| MArea | 區(qū)域 | nvarchar(100) | |
| MController | 控制器 | nvarchar(100) | |
| MIcon | 圖標(biāo) | nvarchar(100) | |
| IsLast | 是不是最后一級菜單:0-是;1-否 | int | |
| IsMenuShow | 是不是作為菜單顯示:0-是;1-否 | int | |
| Remark | 備注 | nvarchar(500) | |
| ParentID | 父ID | nvarchar(50) | |
| Status | 狀態(tài):0-啟用;1-禁用 | int | |
| Hierarchy | 層級 | int | |
| CreatedBy | 創(chuàng)建人 | nvarchar(50) | |
| CreatedTime | 創(chuàng)建時間 | datetime | |
| ModifiedBy | 修改人 | nvarchar(50) | |
| ModifiedTime | 修改時間 | datetime | |
| Sort | 排序值 | int |
SysFunction 菜單按鈕表 (菜單權(quán)限項表)
- SysFunction一開始我是叫菜單按鈕表的,我計劃是查詢、新增編輯刪除、其他權(quán)限這樣控制,但后來發(fā)現(xiàn)這樣不好,所以全都分開,每個方法都要記錄。當(dāng)然為了方便,通用的方法,在增加菜單的時候會自動添加上。
- 菜單權(quán)限項菜單是多對一關(guān)系
| ObjectID | 主鍵 | nvarchar(50) | TRUE |
| FName | 名稱 | nvarchar(50) | |
| FFunction | 方法 | nvarchar(50) | |
| FIcon | 圖標(biāo) | nvarchar(50) | |
| ParentID | 所屬菜單 | nvarchar(50) | |
| Remark | 備注 | nvarchar(500) | |
| Status | 狀態(tài):0-啟用;1-禁用 | int | |
| CreatedBy | 創(chuàng)建人 | nvarchar(50) | |
| CreatedTime | 創(chuàng)建時間 | datetime | |
| ModifiedBy | 修改人 | nvarchar(50) | |
| ModifiedTime | 修改時間 | datetime | |
| Sort | 排序值 | int |
R_sysUserInfo_sysRole用戶和角色關(guān)聯(lián)表,記錄用戶和角色的對應(yīng)關(guān)系。
R_RolePermission 角色菜單權(quán)限項關(guān)聯(lián)表。
比如一個角色有用某菜單下的查詢和刪除權(quán)限,那么這個表應(yīng)該是具有兩條記錄的。
R_UserPermissions 用戶菜單權(quán)限項關(guān)聯(lián)表。
HavePermission記錄該用戶是 是否有權(quán)限:0-無權(quán)限;1-有權(quán)限
后續(xù)處理的時候,要從獲取的權(quán)限記錄中排除直接無權(quán)限的記錄,增加有權(quán)限的。
總結(jié)
其實網(wǎng)上很多關(guān)于權(quán)限的文章,之前自己再看的時候,總是覺得迷迷糊糊,所以最后打算自己動手做。到做完的時候,才有所理解。我也不知道我這里敘述的是不是不清楚或者設(shè)計的是否合理,如果您覺得有問題,請告知我,我會立即改正!
切勿眼高手低,動手敲,像Power Design我也是第一次用,也是第一次用MarkDown寫博客。
此框架可以快速搭建應(yīng)用,T4模板生成代碼,適合學(xué)習(xí)使用。如有問題,請與我聯(lián)系
Demo地址:http://app.guoddy.com
源代碼地址:https://github.com/jellydong/LJDAPP
數(shù)據(jù)并不會真實保存,設(shè)定的為測試模式,所以免登錄。
轉(zhuǎn)載于:https://www.cnblogs.com/jellydong/p/11462192.html
總結(jié)
以上是生活随笔為你收集整理的基于ASP.Net Core开发的一套通用后台框架的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu系统安装gedit
- 下一篇: 浏览器输入 URL 之后的链路