這是本人在學習的過程當中搭建學習的框架,若是對你有所幫助那再好不過。若是您有發現錯誤,請告知我,我會第一時間修改。
知其然,知其因此然,並不是重複的造輪子。由於這段時間我發現,本身悶好久寫出來的代碼,再去看看別人的,會有種恍然大悟的感受。不是隻會用,而不知道爲何要這樣用。
真的,只看不敲,老是學不會。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
我這裏主要涉及七個表,四個數據表,三個關聯表。
爲何這樣設計,我以爲可能這是大多數系統的需求。
1.用戶和角色多對多,一個用戶能夠擁有多個角色,否則設計角色就沒有了意義,實際可能一我的身兼數職。
2.能夠直接給用戶授予或取消授予某個權限。這個可能會有人以爲不必,因此若是不涉及這個,那就是五個表。可是我這裏保留,由於不少狀況下,這是很正常的需求。
3.菜單能夠無限級別,根據實際需求,修改系統配置參數。工具
ObjectID
、Remark
、Status
、CreatedBy
、CreatedTime
、ModifiedBy
、ModifiedTime
、Sort
是默認字段。學習
- 若是用戶數據量大的話,實際這個表只須要保留
ObjectID
、ULoginName
、ULoginPWD
就能夠了,這樣能夠提升速度,不必把全部信息都保存起來。- 用戶和角色多對多 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 | nvarchar(50) | ||
UQQ | 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 |
- 對角色的分類,好比管理員、普通用戶等。
- 角色用戶多對多 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 |
- 菜單表 是一開始設計好後,改動最多的一個表。後續在開發過程當中增長了
IsLast
、Hierarchy
;去除了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一開始我是叫菜單按鈕表的,我計劃是查詢、新增編輯刪除、其餘權限這樣控制,但後來發現這樣很差,因此全都分開,每一個方法都要記錄。固然爲了方便,通用的方法,在增長菜單的時候會自動添加上。
- 菜單權限項菜單是多對一關係
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 |
好比一個角色有用某菜單下的查詢和刪除權限,那麼這個表應該是具備兩條記錄的。開發工具
HavePermission
記錄該用戶是 是否有權限:0-無權限;1-有權限
後續處理的時候,要從獲取的權限記錄中排除直接無權限的記錄,增長有權限的。測試
其實網上不少關於權限的文章,以前本身再看的時候,老是以爲迷迷糊糊,因此最後打算本身動手作。到作完的時候,纔有所理解。我也不知道我這裏敘述的是否是不清楚或者設計的是否合理,若是您以爲有問題,請告知我,我會當即改正!
切勿眼高手低,動手敲,像Power Design我也是第一次用,也是第一次用MarkDown寫博客。
此框架能夠快速搭建應用,T4模板生成代碼,適合學習使用。若有問題,請與我聯繫.net
Demo地址:http://app.guoddy.com
源代碼地址:https://github.com/jellydong/LJDAPP 數據並不會真實保存,設定的爲測試模式,因此免登陸。