基於ASP.Net Core開發的一套通用后台框架


基於ASP.Net Core開發一套通用后台框架

寫在前面

這是本人在學習的過程中搭建學習的框架,如果對你有所幫助那再好不過。如果您有發現錯誤,請告知我,我會第一時間修改。
知其然,知其所以然,並非重復的造輪子。因為這段時間我發現,自己悶很久寫出來的代碼,再去看看別人的,會有種恍然大悟的感覺。不是只會用,而不知道為什么要這樣用。
真的,只看不敲,總是學不會。

Demo地址:http://app.525600.xyz/
源代碼地址:https://github.com/jellydong/LJDAPP
數據並不會真實保存,設定的為測試模式,所以免登錄。

開發工具

1.Visual Studio 2019
2.SQL Server 2017
3.Power Design

總體效果

主頁

主頁
菜單管理
菜單管理
)
角色管理及權限配置

菜單管理

權限設計&Why

權限

我這里主要涉及七個表,四個數據表,三個關聯表。
為什么這樣設計,我覺得可能這是大多數系統的需求。
1.用戶和角色多對多,一個用戶可以擁有多個角色,不然設計角色就沒有了意義,實際可能一個人身兼數職。
2.可以直接給用戶授予或取消授予某個權限。這個可能會有人覺得沒必要,所以如果不涉及這個,那就是五個表。但是我這里保留,因為很多情況下,這是很正常的需求。
3.菜單可以無限級別,根據實際需求,修改系統配置參數。

詳細說明

ObjectIDRemarkStatusCreatedByCreatedTimeModifiedByModifiedTimeSort是默認字段。

SysUserInfo用戶表
  • 如果用戶數據量大的話,實際這個表只需要保留ObjectIDULoginNameULoginPWD就可以了,這樣可以提高速度,沒必要把所有信息都保存起來。
  • 用戶和角色多對多 R_sysUserInfo_sysRole
  • 用戶和權限項多對多(直接授權或禁止) R_UserPermissions
Name 說明 類型 主鍵
ObjectID 主鍵 nvarchar(50) TRUE
ULoginName 用戶名 nvarchar(20)
ULoginPWD 密碼 nvarchar(50)
URealName 真實姓名 nvarchar(10)
UTelphone 電話 nvarchar(20)
UMobile 手機號 nvarchar(11)
UEmail Email nvarchar(50)
UQQ QQ nvarchar(20)
UGender 性別:0-女;1-男;2-保密 int
UDepID 所屬部門 nvarchar(50)
Remark 備注 nvarchar(500)
Status 狀態:0-啟用;1-禁用 int
CreatedBy 創建人 nvarchar(50)
CreatedTime 創建時間 datetime
ModifiedBy 修改人 nvarchar(50)
ModifiedTime 修改時間 datetime
Sort 排序值 int
SysRole角色表
  • 對角色的分類,比如管理員、普通用戶等。
  • 角色用戶多對多 R_sysUserInfo_sysRole
  • 角色權限多對多 R_RolePermission
Name 說明 類型 主鍵
ObjectID 主鍵 nvarchar(50) TRUE
RName 角色名稱 varchar(50)
Remark 備注 nvarchar(500)
Status 狀態:0-啟用;1-禁用 int
CreatedBy 創建人 nvarchar(50)
CreatedTime 創建時間 datetime
ModifiedBy 修改人 nvarchar(50)
ModifiedTime 修改時間 datetime
Sort 排序值 int
SysMenus菜單表
  • 菜單表 是一開始設計好后,改動最多的一個表。后續在開發過程中增加了IsLastHierarchy;去除了MAction
  • IsLast用來標記是不是最后一級,如果是最后一級我們給自動增加增刪改等默認方法。
  • Hierarchy用來標記層級,前面我們說可以做到無限極,但是通常情況下會是三級,所以這個需要根據實際設定系統參數,維護的時候檢查限制即可。
  • IsMenuShow是否作為菜單顯示,也就是左側菜單遞歸的,因為有部分API不需要作為菜單顯示,並且授權的方式也會不一樣。
  • 菜單角色多對多 R_RolePermission
  • 菜單權限項一對多
Name 說明 類型 主鍵
ObjectID 主鍵 nvarchar(50) TRUE
MName 名稱 nvarchar(100)
MUrl URL nvarchar(100)
MArea 區域 nvarchar(100)
MController 控制器 nvarchar(100)
MIcon 圖標 nvarchar(100)
IsLast 是不是最后一級菜單:0-是;1-否 int
IsMenuShow 是不是作為菜單顯示:0-是;1-否 int
Remark 備注 nvarchar(500)
ParentID 父ID nvarchar(50)
Status 狀態:0-啟用;1-禁用 int
Hierarchy 層級 int
CreatedBy 創建人 nvarchar(50)
CreatedTime 創建時間 datetime
ModifiedBy 修改人 nvarchar(50)
ModifiedTime 修改時間 datetime
Sort 排序值 int
SysFunction 菜單按鈕表 (菜單權限項表)
  • SysFunction一開始我是叫菜單按鈕表的,我計划是查詢、新增編輯刪除、其他權限這樣控制,但后來發現這樣不好,所以全都分開,每個方法都要記錄。當然為了方便,通用的方法,在增加菜單的時候會自動添加上。
  • 菜單權限項菜單是多對一關系
Name 說明 類型 主鍵
ObjectID 主鍵 nvarchar(50) TRUE
FName 名稱 nvarchar(50)
FFunction 方法 nvarchar(50)
FIcon 圖標 nvarchar(50)
ParentID 所屬菜單 nvarchar(50)
Remark 備注 nvarchar(500)
Status 狀態:0-啟用;1-禁用 int
CreatedBy 創建人 nvarchar(50)
CreatedTime 創建時間 datetime
ModifiedBy 修改人 nvarchar(50)
ModifiedTime 修改時間 datetime
Sort 排序值 int
R_sysUserInfo_sysRole用戶和角色關聯表,記錄用戶和角色的對應關系。
R_RolePermission 角色菜單權限項關聯表。

比如一個角色有用某菜單下的查詢和刪除權限,那么這個表應該是具有兩條記錄的。

R_UserPermissions 用戶菜單權限項關聯表。

HavePermission記錄該用戶是 是否有權限:0-無權限;1-有權限
后續處理的時候,要從獲取的權限記錄中排除直接無權限的記錄,增加有權限的。

總結

其實網上很多關於權限的文章,之前自己再看的時候,總是覺得迷迷糊糊,所以最后打算自己動手做。到做完的時候,才有所理解。我也不知道我這里敘述的是不是不清楚或者設計的是否合理,如果您覺得有問題,請告知我,我會立即改正!
切勿眼高手低,動手敲,像Power Design我也是第一次用,也是第一次用MarkDown寫博客。
此框架可以快速搭建應用,T4模板生成代碼,適合學習使用。如有問題,請與我聯系

Demo地址:http://app.guoddy.com
源代碼地址:https://github.com/jellydong/LJDAPP
數據並不會真實保存,設定的為測試模式,所以免登錄。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM