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

来源:https://www.cnblogs.com/jellydong/archive/2019/09/04/11462192.html
-Advertisement-
Play Games

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


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

寫在前面

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

Demo地址:http://app.guoddy.com
源代碼地址: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
數據並不會真實保存,設定的為測試模式,所以免登錄。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、首先要有密鑰AK ,可以自己註冊獲取或複製別人的 。搜索百度地圖API (http://lbsyun.baidu.com/apiconsole/key) 2、地圖示例 如圖: 引原文:https://www.cnblogs.com/luhailin/p/6639943.html ...
  • 函數的出現,既解決了重覆使用重一功能的需求,又可以避免代碼的臃腫性。 ...
  • 微信小程式室內地圖導航開發,小程式室內地圖開發,小程式地圖導航,調用ESMap室內地圖需要用到小程式web-view組件。ESMap地圖引擎(室內3D地圖)提供地圖瀏覽、縮放、旋轉、圖層顯隱、室內定位、室內導航、全景等基礎功能,支持自定義室內地圖顯示風格及樣式,可自動繪製樓層熱力圖、散點圖等專題地圖... ...
  • 1.首先說明node.js、npm、cnpm分別是做什麼的? node.js簡單的說 Node.js 就是運行在服務端的 JavaScript,安裝了node.js預設安裝了npm,可以使用npm -v查看是否安裝。 npm可以理解為遠程倉庫,如果我們要使用npm需要先把需要的包寫到package. ...
  • web前端開發技術人才越來越吃香,而且web前端領域劃分越來越細,對技術的需求越來越高,想學習web前端的人也是越來越多。那麼,如何學習web前端知識?從哪開始?轉型成為web前端工程師需要學些什麼?小白到高手需要多久? 1、轉型web前端需要學什麼 第一階段:你要從最基礎的HTML/CSS開始,簡 ...
  • HTML5對比HTML4新增了很多元素,也刪除了部分元素(可以用css樣式表方式替代)所以我只列出HTML5最常用的幾個標簽。 head標簽中: body標簽中: 列表/表格: 在HTML中,<form></form>標簽對用來創建一個表單,即定義表單的開始和結束位置,真正處理表單的數據腳本或程式在 ...
  • font-style: normal; ...
  • js代碼: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...