我的第一個python web開發框架(35)——權限數據庫結構設計


  接下來要做的是權限系統的數據庫結構設計,在上一章我們了解了權限系統是通過什么來管理好權限的,我們選用其中比較常用的權限系統來實現當前項目管理要求。

  下面是我們選擇的權限系統關系模型:

 

  從以上關系可以看到,用戶登錄成功以后,通過讀取管理員賬號信息獲取當前管理員所在部門與職位,讀取職位中的權限信息。進入系統以后,通過職位權限信息篩選出顯示的菜單項;訪問各功能頁面並進行增刪改查操作時,通過權限信息判斷當前管理員是否有操作權限,從而實現對系統管理員操作權限的控制。下面分別解說一下各數據表的用途。

 

  菜單表是用來注冊(綁定)菜單、管理頁面和接口用的,沒有將接口和菜單項添加到菜單表的話,程序是不清楚有那些菜單項和接口的,菜單項與接口之間存在什么相的關系。

  所以需要在開發時,手動將它們添加到菜單表中,才能對各功能進行對應的管理。

  在開始設計菜單表之前,大家要思考的是,我們需要存儲什么信息,它們之間有什么關聯,每個字段有什么用途,為什么要增加這個字段或減少這個字段?

  對於菜單表字段,多數字段大家都很容易定下來,比如說菜單名稱、菜單url(綁定的html頁面名稱或路徑)、菜單小圖標(增加菜單的美觀度)、上一菜單id(用於建立樹級菜單目錄)、排序、是否顯示(對於有些頁面或按鍵功能,不在菜單列表中顯示)、是否禁用(有些功能暫時不使用時,可以將它禁用掉)。除了之些之外,我們還需要增加菜單路由地址字段,用於存儲當前菜單所綁定頁面所需要使用到的路由地址項,比如說編輯菜單頁面,我們在開發時需要先讀取這條記錄出來,然后再進行編輯,最后再提交,這里就會涉及到兩個路由,一個是菜單記錄讀取的的路由,和菜單記錄修改的路由,在做權限判斷時,就可以權限當前操作頁面與綁定的路由地址,跟權限信息進行比較,判斷是否有操作權限,具體會在后面對應章節詳細說明。由於我們前端使用的是jqGrid組件的樹列表功能,組件要求服務器端在返回列表時,還需要返回樹列表深度、當前節點是否是最終節點、當前節點是否展開三個字段,所以需要將它們加入菜單表中。

  根據這些要求,我們的菜單表的數據結構如下

  

  最終完成的菜單管理頁面效果如下:

  

 


  部門表它相當於權限分組,可以根據企業的部門結構,創建對應的結構記錄,這樣也方便企業對系統權限關系更加容易理解。當然也可以根據需要設置虛擬部門出來管理。

  對於部門表,首先它也是樹狀關系,所以它跟菜單表結構基本類似。

  為了以后擴展需要,需要添加部門編碼字段,編碼從01開始一直累加到99,當然如果部門超過99個的話,要么增加到3位數,要么當前框架已不能支持業務的發展需要思考新的架構了。

  編碼每增加一級,在01后面自動增加”0x“,編碼的長度跟部門分級深度相關。

  下面是部門表結構,看起來好像是在菜單表的基礎上刪減了很多字段得來的一樣。

  

 

 

  職位表是綁定在部門下的權限角色,它直接與菜單項進行關聯,不同職位可以設置不同的權限(設置可查看與操作的菜單項)

  所以職位表需要存儲與部門表的關聯項:部門表id、部門編碼、和部門名稱(直接存儲這個冗余字段,是為在需要顯示職位所屬部門時,不需要從部門表中關聯查詢,因為部門名稱幾乎設置后就不會再進行更改了)

  另外,它還需要擁有職位名稱、菜單權限兩個字段

  

  頁面效果圖:

  

  

 

  

  而管理員賬號管理,主要管理的是后台管理員登錄賬號與密碼,管理員的基本信息,還有操作權限。

  而權限的管理只需要綁定對應的部門與職位,在用戶登錄時就可以通過這個綁定獲取對應的操作權限。

  一般來說,管理員賬號需要記錄:登陸賬號、登錄密碼、登錄密鑰(如果需要通過APP端登錄、需要對訪問鏈接加密或是啟用cookies驗證登錄的,需要這個字段來存儲用戶自己對應的密鑰)、最后登錄時間、最后登錄id、登錄次數、注冊時間等信息

  而管理員的基本信息,則是根據不同企業的管理需求不同而不同,有的將人事管理也添加到系統中,則需要記錄每個員工的所有基本信息,當然常用的信息有:用戶中文名稱、性別、出生日期、手機號碼、郵箱、備注,大家根據需要自行添加或刪減。

  而用戶的權限相關字段,主要是綁定部門與職位,和工作狀態和賬號狀態它些字段了。

  具體數據結構:

  

  頁面效果圖:

  

  

 

  做來管理系統,當然還需要記錄管理員的所有操作記錄,比如登錄、退出、瀏覽了什么頁面,操作過什么,所以還要增加一個管理員操作日志表,方便查看分析問題,分清責任

  

 

  權限管理數據表創建sql下載 (PS:為了方便操作,sql會將之前創建的manager表刪除,然后重新添加admin管理員賬號進去)

 

 

版權聲明:本文原創發表於 博客園,作者為 AllEmpty 本文歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則視為侵權。

python開發QQ群:669058475(本群已滿)、733466321(可以加2群)    作者博客:http://www.cnblogs.com/EmptyFS/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM