魔方Newlife.Cube許可權系統的使用及模版覆蓋詳解

来源:https://www.cnblogs.com/oliveyun/archive/2018/11/15/9962635.html
-Advertisement-
Play Games

講人:大石頭 時間:2018-11-14 晚上20:00 地點:釘釘群(組織代碼BKMV7685)QQ群:1600800 內容:魔方Newlife.Cube許可權系統的使用及模版覆蓋詳解 準備 源碼地址: https://github.com/NewLifeX/NewLife.Cube 演示地址:ht ...


  • 講人:大石頭
  • 時間:2018-11-14 晚上20:00
  • 地點:釘釘群(組織代碼BKMV7685)QQ群:1600800
  • 內容:魔方Newlife.Cube許可權系統的使用及模版覆蓋詳解

準備

源碼地址: https://github.com/NewLifeX/NewLife.Cube

演示地址:http://cube.newlifex.com  可以直接註冊用戶以及選用第三方登錄

單點登錄:htts://sso.newlifex.com

開始

1.初識魔方  魔方後臺結構介紹

魔方是一個基於ASP.NET MVC的多角色的許可權管理系統,新版本的設計目標是所有頁面封裝在DLL裡邊,通過覆蓋修改視圖,做到極簡化的使用

1登錄

  其中集成了SSO單點登錄及第三方OAuth登錄,其中既可以作為OAuth客戶端也可以作為OAuth服務端,可以自己內部發佈一個sso伺服器端,只需要發佈cube.dll,xcode.dll,core.dll三個dll的空項目即可

1.1頂部菜單欄

  頂部菜單有欄目點擊及用戶修改註銷等功能

1.2工作台首頁

   應用系統:地址可以解決Nginx轉發的路徑不對的問題

   功能變數名稱地址:多ip或者Nginx代理的顯示

          重啟系統功能特別有用(緩存沒有更新,配置沒有生效,重啟後會重新載入,輕量級重啟,不用iis整個重啟

          程式集列表:可以分析是否缺少第三方組件的引用

         .netcore session不建議使用,所以以後儘量不用session

          內部版本,後邊兩個欄位是編譯出來的,編譯時間來自於內部版本比如2.4.6805.17968,其中內部版本號6805基於2000年1月1日的天數,後邊的17968欄位是後邊的秒數除以2的一個結果

1.3左側區域菜單

  菜單是樹狀的多層菜單,菜單樹是記憶體計算的,1000對以內會整體緩存,因此菜單更新後不一定實時顯示,因為有緩存,需要重啟一下

2.系統菜單中的4個基本功能

    用戶

      記錄每個用戶,可以對用戶信息進行管理,其中清除密碼功能比較特別,清除密碼後可以任意密碼登錄,登錄密碼作為新密碼存儲在資料庫中

    日誌

      日誌作為系統的安全與審計,是不能修改,添加,刪除的.其中包含操作記錄,訪問統計等

    角色

      系統預設了管理員,游客,普通用戶,高級用戶等幾個角色,其中在第一個預設登錄系統的賬號會自動替換為管理員角色,admin自動降級為游客,角色與名稱可以根據自己的業務進行修改,其中我們支持多角色,一個主角色,多個次要角色,多角色是或的關係,只要有許可權都支持.

    菜單

      對系統菜單與業務菜單進行編輯與修改,其中系統菜單裡邊修改過後一定要勾選上必要,不然會被魔方初始化覆蓋,其中可見指的是是否在左側菜單欄中顯示,可以自定義許可權

  業務菜單

    系統啟動後會自動掃描區域與控制器,將區域作為一級菜單載入到資料庫,將控制器作為二級子菜單載入到區域菜單下邊,其中菜單名字通過[DisplayName("菜單名稱")]來註解

 

 

 3.高級功能

  3.1魔方設置

    基本設置

      對系統的一些基本設置,包括全局調試,日誌等級,日誌目錄,插件伺服器設置等

    系統設置

      對系統的名稱進行設置,登錄頁,頁面頭部的名稱,其中開發者模式的開關控制著頁面的sql輸出,以及高級功能裡邊的生成Form表單與生成List數據頁的視圖,啟用與否代表整個魔方系統是否啟用

    數據中間設置

      xcode中間件設置,其中最重要的反向工程設置,預設為on,這個時候會根據實體文件對數據表進行檢測,其中會新增欄位,不能刪除與修改欄位,緩存時間一般是10秒,可以設置預設的備份資料庫目錄,主要針對sqlite文件資料庫

    魔方設置

      顯示時間控制,作為整個頁面的資料庫查詢時間的一個輔助開發功能設置

      插件伺服器設置,這個是所有的插件以及資源伺服器的一個設置

      工作台頁面設置,作為一個後臺許可權系統登錄進來展示的首頁

      佈局頁設置,是整個mvc佈局頁的一個設置

      密碼登錄,啟用註冊,自動註冊強行綁定用戶設置都是跟用戶相關的一些設置

      下拉框選擇,其中下拉框開啟後樣式為bootstrap,頁面載入會比較耗時,如果追求極速,可以考慮關閉下拉框選擇

      SSL作為https的強制使用

   3.2文件

    線上的文件管理系統,可以直接上傳bin文件以及下載sqlite的備份文件下載到本地

   3.3頁面右邊高級功能

    清空數據表:其中清空表是checkident操作,會把自增ID重新從1開始

    刪除全部:刪除當前符合查詢條件的全部記錄

    導出xml與json,按照xml或者json格式導出當前符合查詢條件的記錄

    導出excel,測試過最多導出過90w的記錄

    生成Form表單:生成表單視圖模版文件,可以隨意修改視圖頁面

    生成List數據模版,隨意修改列表數據頁

4.魔方項目引用及使用

  4.1魔方dll的引用

    新建.NET Framework    MVC項目

  

   在新建項目中右鍵選擇管理Nuget包中搜索NewLife.cube然後安裝到本項目中,該cube.dll會自動引入XCode.dll與core.dll,其中cube所需的資源包,項目會自動下載到Content目錄下邊

  

 安裝完成後會在目錄生成Model.xml與Build.tt文件,其中Model.xml文件是資料庫參考文件

資料庫模型文件詳細說明見圖所標識:

 

Index為預設主鍵索引,其中表名+主鍵名稱會在實體類Biz.cs中自動生成擴展屬性

4.2實體的生成

在build.tt文件上右鍵選擇運行自定義工具就會在Model.xml文件中設定的目錄下生成實體文件.cs數據文件,biz.cs業務文件,分部類,一個類放在多個文件裡邊,biz.cs只是在第一次生成,以後不會覆蓋生成,.cs每次更新表都會重新生成

4.3魔方的使用區域與控制器

  在項目上右鍵在彈出菜單中選擇添加,在子菜單中點擊區域按鈕新增區域Areas,即在左側新建一個一級菜單

  

我新建了一個Test的區域,修改區域的AreaRegistration文件,將繼承修改為AreaRegistrationBase,並使用註解[DisplayName("區功能變數名稱稱即一級菜單的名稱")]的方式為該菜單的名稱

新建控制器繼承自EntityController<實體類>,會自動生成一個二級子菜單,通過註解[DisplayName("二級菜單的名稱")]

運行得到該實體列表頁,要想列表中某些欄位不顯示,只需要在控制器中的構造方法裡邊輸入ListFields.Remove("列名”)

 public class MyUserController : EntityController<Log>
    {
        public MyUserController() {
            ListFields.Remove(Log._.CreateUserID);
        }
    }

4.4高級按鈕生成表單與列表的視圖文件

 

生成模版文件後,點擊工程的顯示所有按鈕,然後在對應的控制器的view目錄下將模版文件包括在項目中,這個時候可以對模版進行任意覆蓋修改,自己可以多修改運行試試效果,特別註意

需要在views下邊的webconfig文件中加入 以下的命名空間

   <add namespace="NewLife" />
        <add namespace="NewLife.Cube" />
        <add namespace="NewLife.Reflection" />
        <add namespace="NewLife.Web" />
        <add namespace="XCode" />
        <add namespace="XCode.Membership" />

 

 

5.魔方的精髓 模版覆蓋

 5.1模版介紹

  模版分為表單模版Form.cshtml,列表模版List.cshtml,佈局模版,每個模版可以分別單獨覆蓋,可以局部整體覆蓋,真正做到任意覆蓋,其中最重要的是可以根據優先順序順序進行整體局部覆蓋,需要整站覆蓋直接修改     Ace_Layout.cshtml

    其中優先順序順序依次為項目Views-->控制器Views-->Areas Views-->魔方內置Views

    列表模版詳細說明如下:整個模版分為_List_Toolbar.cshtml,_List_Data.cshtml,_List_Pager.cshtml

其中_List_Data.cshtml又包含兩部分數據部分:_List_Data_Item.cshtml 與 操作部分:_List_Data_Action.cshtml

  

   _List_Toolbar.cshtml是最複雜的功能其中包含批量操作_List_Toolbar_Batch.cshtml,日期搜索_List_Search.cshtml對應(_DateRange.cshtml)不知為何要這樣多一個search的頁面,不敢揣摩聖意,關鍵字查詢_List_Toolbar_Search.cshtml,高級按鈕功能,_List_Toolbar_Adv.cshtml

 

現在示例一下修改Search的查詢:首先在控制器中重載一下Search方法,在實體中實現Search的高級搜索方法

   protected override IEnumerable<UserOnline> Search(Pager p)
        {
            var id = p["id"];//取當前頁面的id值
            //p["q"]關鍵字的值
            return UserOnline.Search(p["q"],p);
        }

最後可以使用自定義工具RazorGenerator將視圖文件編譯成DLL文件,可以聯機搜索安裝

當項目Views同時使用cshtml文件與DLL的時候優先使用cshtml文件

神奇黑科技:http://cube.newlifex.com/School/Class/json?q=11&Sort=ID&Desc=True&key=abcdefg

魔方支持json,xml導出數據,其中key為token,q為關鍵字,sort是排序欄位

 


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

-Advertisement-
Play Games
更多相關文章
  • 源碼分析入口: ...
  • 分割線 ...
  • Java語法 1.Java流程式控制制語句 1.概述 在一個程式執行的過程中,各條語句的執行順序對程式的結果是有直接影響的。也就是說程式的流程對運行結果有直接的影響。所以,我們必須清楚每條語句的執行流程。而且,很多時候我們要通過控制語句的執行順序來實現我們要完成的功能。 2.流程式控制制語句的分類 1)順序 ...
  • 1 import pickle 2 3 4 class User: 5 def __init__(self,username,password): 6 self.username = username 7 self.password = password 8 9 10 class Client: 1 ...
  • ASP.NET -- WebForm: ViewState的使用 ...
  • 作者:依樂祝 原文鏈接:https://www.cnblogs.com/yilezhu/p/9966945.html 寫在前面 很幸運,28歲的我頭髮還沒有掉光,更幸運的是28歲的我開始了博客園的寫作生活!這樣的技術分享經歷讓我拓展了自己的朋友圈!有幸結識了像張善友張隊(連續13年的微軟MVP),大 ...
  • 將word2中的內容插入到word1中的指定位置(經測試可用) 在官網找到的例子,記錄一下: ...
  • 一、自定義泛型方法(Generic Method),將類型參數用作參數列表或返回值的類型: 1.聲明泛型方法時,可以在參數列表中使用這個類型參數:void MyFunc<T>(T obj) { };此時在調用該泛型方法時可以省略類型參數的指定由編譯器推斷其類型,例如:MyFunc<int>(myNu ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...