我的第一個python web開發架構(35)——許可權資料庫結構設計

來源:互聯網
上載者:User

  接下來要做的是許可權系統的資料庫結構設計,在上一章我們瞭解了許可權系統是通過什麼來管理好許可權的,我們選用其中比較常用的許可權系統來實現當前專案管理要求。

  下面是我們選擇的許可權系統關聯式模式:

 

  從以上關係可以看到,使用者登入成功以後,通過讀取管理員帳號資訊擷取當前管理員所在部門與職位,讀取職位中的許可權資訊。進入系統以後,通過職位許可權資訊篩選出顯示的功能表項目;訪問各功能頁面並進行增刪改查操作時,通過許可權資訊判斷當前管理員是否有操作許可權,從而實現對系統管理員操作許可權的控制。下面分別解說一下各資料表的用途。

 

  菜單表是用來註冊(綁定)菜單、管理頁面和介面用的,沒有將介面和功能表項目添加到菜單表的話,程式是不清楚有那些功能表項目和介面的,功能表項目與介面之間存在什麼相的關係。

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

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

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

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

  

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

  

 


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

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

  為了以後擴充需要,需要添加部門編碼欄位,編碼從01開始一直累加到99,當然如果部門超過99個的話,要麼增加到3位元,要麼當前架構已不能支援業務的發展需要思考新的架構了。

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

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

  

 

 

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

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

  另外,它還需要擁有職位名稱、菜單許可權兩個欄位

  

  頁面:

  

  

 

  

  而管理員帳號管理,主要管理的是後台管理員登入帳號與密碼,管理員的基本資料,還有操作許可權。

  而許可權的管理只需要綁定對應的部門與職位,在使用者登入時就可以通過這個綁定擷取對應的操作許可權。

  一般來說,管理員帳號需要記錄:登陸帳號、登入密碼、登入密鑰(如果需要通過APP端登入、需要對訪問連結加密或是啟用cookies驗證登入的,需要這個欄位來儲存使用者自己對應的密鑰)、最後登入時間、最後登入id、登入次數、註冊時間等資訊

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

  而使用者的許可權相關欄位,主要是綁定部門與職位,和工作狀態和帳號狀態它些欄位了。

  具體資料結構:

  

  頁面:

  

  

 

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

  

 

  許可權管理資料表建立sql下載 (PS:為了方便操作,sql會將之前建立的manager表刪除,然後重新添加admin管理員帳號進去)

 

 

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

python開發QQ群:669058475    作者部落格:http://

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.