基於ASP.Net Core開發的一套通用後臺框架

基於ASP.Net Core開發一套通用後臺框架

寫在前面

這是本人在學習的過程當中搭建學習的框架,若是對你有所幫助那再好不過。若是您有發現錯誤,請告知我,我會第一時間修改。
知其然,知其因此然,並不是重複的造輪子。由於這段時間我發現,本身悶好久寫出來的代碼,再去看看別人的,會有種恍然大悟的感受。不是隻會用,而不知道爲何要這樣用。
真的,只看不敲,老是學不會。git

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

開發工具

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

整體效果

主頁框架

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

菜單管理

權限設計&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模板生成代碼,適合學習使用。若有問題,請與我聯繫.net

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

相關文章
相關標籤/搜索