日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET Core实战项目之CMS 第七章 设计篇-用户权限极简设计全过程

發布時間:2023/12/4 asp.net 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET Core实战项目之CMS 第七章 设计篇-用户权限极简设计全过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

寫在前面

這篇我們對用戶權限進行極簡設計并保留其擴展性。首先很感謝大家的閱讀,前面六章我帶著大家快速入門了ASP.NET Core、ASP.NET Core的啟動過程源碼解析及配置文件的加載過程源碼解析并引入依賴注入的概念、Git的快速入門、Dapper的快速入門、Vue的快速入門。不知道大伙掌握的怎么樣了!如果你有興趣的話可以加入我們的.NET Core實戰項目群637326624跟更多的小伙伴共同進行交流下。

接下來我們就正式進入.NET Core實戰項目之CMS的設計篇了。在設計篇呢,我們需要對數據庫進行設計,而數據庫的設計又分為功能部分設計以及用戶權限部分設計。作為設計篇的第一篇,我們先進行權限部分的設計吧!希望對你進行權限設計有所啟發。

本篇已經收錄至《.NET Core實戰項目之CMS 第一章 入門篇-開篇及總體規劃》

作者:依樂祝
原文地址:https://www.cnblogs.com/yilezhu/p/10056094.html

需求分析

首先,做一個東西之前必須把需求搞清楚。網上關于權限管理需求分析以及設計的文章也比較多,這里把我們需要實現的這個簡單的CMS系統將要實現的權限部分內容羅列如下:

由于水平有限,有設計不合理的地方還請給予指正,我會以迅雷不及掩耳之勢給以糾正,從而能夠正確的引導更多的人。

  • 權限資源

    • 菜單權限:管理員跟內容編輯者登錄系統所擁有的功能菜單是不一樣的(先實現這塊)

    • 按鈕權限:管理員有文章審核的功能,而內容編輯者沒有(文章審核通過后才能進行發布,最近聽群里小伙伴說權限控制如何控制到按鈕,這個后期會考慮加上)

    • 數據權限:內容編輯者A看不到內容編輯者B發表的文章,而管理員可以看到A跟B的文章(這個后期也會考慮加上)

    • 字段權限:內容編輯者看不到文章的審批人是誰,而管理員能看到(這個后期也會考慮加上,而且脫離業務的字段權限,有點耍流氓的感覺)

      目前權限部分第一版只實現菜單權限部分,后期會擴展到按鈕權限,數據權限以及字段權限!因為如果設計的太多的話對很多新手朋友可能很難消化,同時如果設計的太多的話反而增加系統的復雜性,影響后面課程的進度。

    用戶
    用戶是應用系統的具體操作者,我這里設計的是不能把權限直接分配給用戶,如果用戶想擁有某個權限,必須先為這個用戶創建一個角色,然后給這個角色分配相應的權限,從而間接的讓用戶擁有了系統的權限(說的有點拗口,大伙將就著看吧)。當然國內的情況是總有些人比較特殊,這時候可以專門為這個人創建一個特殊的角色來解決問題。

    角色
    為了對許多擁有相似權限的用戶進行分類管理,定義了角色的概念,以上所有的權限資源都可以分配給角色,然后通過給用戶分配某個角色,從而達到給用戶分分配目的(就是為了解耦資源權限和用戶)角色和用戶是N:N的關系。

    設計

    經過N次優化的數據庫結構設計。本來數據庫核心表中有很多多對多的關系(用戶與角色/角色與菜單等),所以中間多了很多關聯關系表,后來想想覺得何苦呢,為什么大伙都喜歡這樣的設計,所以為了簡化這個過程我進行了如下的設計:

    這里你可能會問我:所有多對多的關系都放在一張表里面,怎么保證性能呢?什么?性能?沒有千萬級別的數據,別跟我談性能。如果你的系統幾十萬數據時都會很卡的話,還是乖乖的去惡補一下數據庫基礎吧。

    數據庫設計我采用的是PowerDesigner,首先打開軟件,新建一個概念模型。然后對這塊的設計如下:

    上圖可能不清晰,所以下面我會對每個表進行詳細的說明。

    表詳細說明

    后臺管理員

    后臺管理員顧名思義就是對我們的后臺進行管理的人。這里考慮到后期擴展可能會用到會員系統(Users)因此這里的后臺管理員表名使用Manager 。后臺管理員包含的信息有:
    主要信息:主鍵,角色ID,是否鎖定
    登錄相關信息:用戶名,密碼
    個性化信息:昵稱,頭像
    聯系方式信息:手機號碼,郵箱地址
    登錄相關信息:登錄次數,最后一次登錄IP,最后一次登錄時間
    操作相關信息:添加人,添加時間,修改人,修改時間
    其他信息:是否刪除,備注

    后臺管理員角色

    這里為了使后臺管理員與后臺菜單進行解耦引入了角色的概念。一個后臺管理員想要具有某個菜單的功能必須給它分配相應角色才能可以,角色又分為系統管理員和超級管理員。超級管理員的角色不能進行修改,擁有后臺的所有權限。而系統管理員的功能則可以進行個性化的定制來滿足需求。

    主要信息:主鍵,角色類型(超級管理員以及系統管理員),角色名稱,是否系統默認(系統默認不能刪除,防止誤刪除)
    操作相關信息:添加人,添加時間,修改人,修改時間
    其他 信息:是否刪除,備注

    后臺管理菜單

    后臺管理菜單是后臺的功能導航。是具體功能的單位,當然每個后臺管理菜單還包含相應的操作權限,這塊我們后期再做具體操作的設計,前期為了考慮大部分人所以這里暫不考慮,但是我已經預留了字段,聰明如你,應該猜得到這是哪個字段吧!
    主要信息:主鍵,父菜單ID
    個性化信息:名稱,顯示名稱,圖標地址,鏈接地址,排序字段,操作權限(沒錯,保留字段,為后期操作權限做準備)
    操作信息:添加人,添加時間,修改人,修改時間
    其他信息:是否刪除

    角色權限表

    用來設計角色權限,由于目前只有菜單權限,后期可以在此表進行操作權限,以及其他權限的擴展:
    主要信息:主鍵,角色ID,菜單ID
    其他信息:操作類型

    操作日志

    顧名思義,就是對后臺管理員的各種操作進行簡要的記錄
    主要信息:主鍵,操作類型
    操作信息:操作人,操作時間,操作IP,操作人名稱
    其他信息:備注

    總結

    今天帶著大家進行用戶權限模塊的設計,通過再三的斟酌只保留了這五張表,所以保留下來的這五張表也都個個是精華。之前設計的時候想不通為什么那么熱衷于那么多的多對多設計,這樣的極簡設計也別有一番風味,瞬間感覺整個世界都簡單了很多。如果又覺得我的設計不合理的話,還請大家在下面留言或者加我聯系我吧!寫文章需要動力,希望大家給個推薦支持一下哈!

    相關文章:

    • .NET Core實戰項目之CMS 第一章 入門篇-開篇及總體規劃

    • .NET Core實戰項目之CMS 第二章 入門篇-快速入門ASP.NET Core看這篇就夠了

    • .NET Core實戰項目之CMS 第三章 入門篇-源碼解析配置文件及依賴注入

    • .NET Core實戰項目之CMS 第四章 入門篇-Git的快速入門及實戰演練

    • .NET Core實戰項目之CMS 第五章 入門篇-Dapper的快速入門看這篇就夠了

    • .NET Core實戰項目之CMS 第六章 入門篇-Vue的快速入門及其使用

    原文地址:https://www.cnblogs.com/yilezhu/p/10056094.html

    .NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的.NET Core实战项目之CMS 第七章 设计篇-用户权限极简设计全过程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。