手把手擼套框架-Victory框架1.1 詳解
目錄
上一篇部落格 Victory框架1.0 詳解 有說道,1.0的使用過程中出現不少缺點,比如選單不能摺疊,許可權沒有許可權組等等。
所以,我還是抽出時間在下班後,回到我的小黑屋裡 完成了1.1的升級。 相比1.0 ,這次的1.1 有的大範圍的改進。
Victory1.1 原始碼: https://github.com/demon28/Victory.Template1.1
核心的改進還是 RBAC-1, 這個在這篇文章中有寫到: 手把手擼套框架-許可權系統設計。 我之所以,單獨儲存1.0 也是因為1.0 是RBAC-0的5表設計,非常經典。
Victory 1.1 是RBAC-1 數了下有16張表,比較龐大。 但是功能也多了很多,比如 許可權控制選單,許可權控制 使用者組, 給使用者組授權等。
大部分的理念和1.0沒什麼區別。這裡說一下 上一篇講解1.0 沒有收到的幾個點:
1,AppSetting.json 檔案。 這個檔案是必須要講的:
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "AllowedHosts": "*", "ConnectionStrings": { "DB": "EnvironDatabase", //當前使用資料庫 "IsEncrypt": "false", //是否使用加密字串 "ProductDatabase": "Data Source=120.77.211.84;Initial Catalog=YH.EAM; User Id=sa;Password=admin(123);Integrated Security=True;Pooling=true;Min Pool Size=1", //生產環境 "EnvironDatabase": "Data Source=134.175.23.180;Initial Catalog=YH.VictoryTemp; User Id=souy;Password=CH2DCV3P", //預投產環境 "DevelopDatabase": "O0yaiWNz+6MJ7tRdbE17BfLpHn8tWZ6jJ3aWScQ/a4WUdgAY6JY8mBWlmmaI069iWMfkEvNzD8ivY2wpY7wNArTjeBDKSwyVXnacduywF2E9yKUsKTnaazb0Cyhz40K4" //開發環境 }, "IgnoreAuthRight": "false", //是否忽略全域性許可權檢查 "IsSetDefautlRole": "false", //是否給新登入的使用者給一個預設使用者許可權 "IgnoreApiFilter": "false", //是否忽略API請求時的 引數簽名 "IsExceptionFilter": "true", //是否取消全域性異常捕捉 "Jwt": { //JWT 資訊 "ApiKey": "58b59b3ae5d0ec0629950ebdd4dabe39", "Issuer": "Near", "Audience": "VueApp" } }
資料庫我提倡開發一個專案必須有部署三個環境,一個是開發環境,可以公司內部拿一臺伺服器做一個區域網,這樣就不用每個同事都裝一個數據庫服務端,大家開發過程中裝一個客戶端就行了。
然後專案 開發到第一個版本上線的時候,需要部署一個預投產環境,預投產環境與真實投產環境資料保持一致,這個是專門給測試人員使用的,無論是黑盒測試 還是 白盒測試,有個預投產則方便很多,
則不至於每次要測什麼,都跑到真實環境上去測試。
最後投產環境就沒什麼好說的, 投產環境的資料庫,不建議和應用放在同一臺伺服器上,放同一個內網的 資料庫伺服器即可,避免遇到類似中勒索病毒的情況。
這裡有個值得一提的是,IsEncrypt,為true 的話標識,這個字串是加密的,如果是加密的讀取字串的時候 需要解密,這個加解密的方式用的是最基本的AES,AES是需要key的,這個地方key是當前電腦的CPUID
所以,本機環境開發沒問題,放到伺服器上則要重新用工具加密字串,否則key不對解密不了,或者說加密的也不對,Cpu換了嘛。配備了工具:https://github.com/demon28/Victory.ToolBox 用工具加密就行了。
下面幾個配置,我都加上註釋了,IgnoreAuthRight,會用的比較多,這個為true的時候,全域性忽略許可權檢查,也就等於當前使用者有了超級使用者的許可權。
2,contorller的基類。
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.AspNetCore.Mvc.ViewFeatures; using System; using System.Collections.Generic; namespace Victory.Core.Controller { public class TopControllerBase : Microsoft.AspNetCore.Mvc.Controller { /// <summary> /// 不打nonaction 會被當成Action,在Swagger的時候會報錯 /// </summary> /// <param name="msg"></param> /// <returns></returns> [NonAction] public JsonResult FailMessage(string msg = "失敗") { return Json(new { Success = false, Code = 0, Message = msg }); } [NonAction] public JsonResult SuccessMessage(string msg = "成功") { return Json(new { Success = true, Code = 1, Message = msg }); } [NonAction] public JsonResult SuccessResult<T>(T t, string msg = "成功") { return Json(new { Success = true, Code = 1, Message = msg, Content = t }); } [NonAction] public JsonResult SuccessResultList<T>(List<T> list, Models.PageModel page, string msg = "成功") { return Json(new { Success = true, Code = 1, Message = msg, PageIndex = page.PageIndex, PageSize = page.PageSize, TotalCount = page.TotalCount, TotalPage = page.ToTalPage, Content = list }); } [NonAction] public JsonResult SuccessResultList<T>(List<T> list, string msg = "成功") { return Json(new { Success = true, Code = 1, Message = msg, Content = list }); } } }
這個原始碼在Victory.Core 裡面,這是一個工具集,其實我現在有點後悔把 這個基類放到 工具集中,但是現在已經用起來了,我又不好去改,如果去掉的話,已經在開發的專案,如果升級這個程式集則會有問題。
原始碼在這裡:https://github.com/demon28/Victory.Core
這個基類主要的作用也就是 序列化 json。 還是比較好用的。
==================================華麗的分割線==================================
Victroy 對比從1.0 演化到1.1 ,重點只是解決了 許可權問題,將許可權更加放大了,這個是在使用過程中被吐槽最多的地方。
但是並沒有解決我 難受的痛點, 我最難受的痛點 還是 不夠純粹。 裡面 又混合,Vue,Jquery,Element-ui,Bootstarp 以及各種jq外掛。
但是 我說過這是最後一個 1.X版本, 2.0的話,我會基於Vue-Element-admin 做前後端分離,這裡 特地要保留1.1 也是因為 1.x是 前後端不分離的。
我始終繞不過這坎,覺得就一個程式設計師 還要分離前後端 有點多餘。還不如 一個VS全部解決呢, 只奈何VS 對Vue 的支援不夠好,還要開Vscode
就這一點來說,我還更願意用1.x 開發專案。另外1.1 還有一個大問題, 還是在許可權上,這個都逼的我想再推進一個1.2版本。想了想還是算了。
在許可權設計的時候。
我覺得 Tright_power 有點對於, 直接用 角色表 去關聯各個資料即可。這裡完全可以省去兩張表,另外Tright_Power_Element這個表也多餘,
事實上說明 照搬 RBAC-1 還是要做精簡的, 想了想, 檔案表 也要去掉,等我有那閒心思 再優化一般吧,現在我還是堅持1.1是 1.x 的最後一個版本。
Victory1.1 原始碼: https://github.com/demon28/Victory.Template1.1
程式碼生成器:https://github.com/demon28/Victory.CodeGenerator
加密工具箱:https://github.com/demon28/Victory.ToolBox
Victory 工具集:https://github.com/demon28/Victory.Core
後記:6月1-10月1 經歷了四個月,已完全恢復編碼能力。新入職公司已經轉正。 並且得到同事們認可,國慶節後轉崗做專案經理,
感謝四個月來努力的自