手把手擼套框架-Victory框架1.1 詳解

Near_wen發表於2020-10-04

目錄

 

上一篇部落格 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 經歷了四個月,已完全恢復編碼能力。新入職公司已經轉正。 並且得到同事們認可,國慶節後轉崗做專案經理,

感謝四個月來努力的自己。

相關文章