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

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

準備html

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

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

單點登陸:htts://sso.newlifex.comweb

講課視頻1:https://pan.baidu.com/s/1zEUkG7YXnVdvTLq6dJBhzgsql

講課視頻2:https://pan.baidu.com/s/10omTlET99DF-4cgG2bObzw數據庫

開始json

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

魔方是一個基於ASP.NET MVC的多角色的權限管理系統,新版本的設計目標是全部頁面封裝在DLL裏邊,經過覆蓋修改視圖,作到極簡化的使用xcode

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是排序字段

相關文章
相關標籤/搜索