天天看點

【資料庫設計-2】權限設計-系統登入使用者權限設計

需求分析---場景

假設需要為公司設計一個人員管理系統,并為各級上司及全體員工配置設定系統登入賬号。有如下幾個要求:

1. 權限等級不同:公司上司登入後可檢視所有員工資訊,部門上司登入後隻可檢視本部門員工的資訊,員工登入後隻可檢視自己的資訊;

2. 通路權限不同:如公司上司登入後,可檢視員工薪水分布界面,而員工則不能看到;

3. 操作權限不同:如系統管理者可以在資訊釋出界面進行增删改查釋出資訊,而普通員工隻可以在資訊釋出界面進行檢視,不能修改、删除和新增。

功能分析

1. 登入一個系統,基本都需要使用者輸入使用者名、密碼;

2. 每個使用者的角色不同,則其通路權限一般也不同,如:

       系統管理者:可以檢視所有界面;

       普通使用者:隻能檢視部分界面。

3. 不同的使用者,即使可以檢視同樣的界面,但在該界面上可進行的操作權限也不同,如:

       使用者1:可以在界面1上進行增删改查;

       使用者2:隻可以在界面1上檢視,不具備增删改功能;

4. 不同使用者基本都對應不同角色,如:使用者1、使用者2分别對應管理者角色、操作員角色,角色之間也存在權限等級的差異,如:

      角色1:對應省級管理者;==>可以檢視該省下的所有學校資訊;

==>可以檢視該市下的所有學校資訊;

==>可以檢視該縣下的所有學校資訊;

不管是省、市、縣哪個系統管理者,他們可通路的界面都是相同的(即通路權限相同),且在每個界面上可進行的操作權限也相同的,不同的是每個管理者角色可以通路的學校個數和學校範圍不同,這裡稱這種不同為:權限等級不同;

總結:

從上面的分析中,主要涉及到以下幾個概念:

1.角色:

       如系統管理者角色,系統操作員角色,普通使用者角色;

       不同的角色,其通路權限是不同的,即可通路的子產品(界面)集合是不同的;

       角色的權限等級也不同,權限等級如:公司上司、部分上司、普通員工;

2. 子產品:(界面)

    子產品就是指具體的界面,每個子產品上又有不同的操作,如增删改查;

3. 通路權限:确定角色可以通路的子產品(界面)集合;

4. 操作權限:确定可以在各子產品(界面)上進行的操作集合,如增删改查;

5. 權限等級:即确定角色可以通路的範圍,如:

         角色1:權限等級為公司上司,則可以檢視公司所有員工資訊;

         角色2:權限等級為部門上司,則隻可以檢視該部門所有員工資訊。

資料庫設計

總體模型:

【資料庫設計-2】權限設計-系統登入使用者權限設計

1.子產品定義表:

子產品是分層級的,如:資訊管理-->聯系方式管理;

【資料庫設計-2】權限設計-系統登入使用者權限設計

每個子產品都有上級子產品。

2. 角色定義表:

含有角色權限等級,用于為角色配置設定權限等級;

【資料庫設計-2】權限設計-系統登入使用者權限設計

角色權限等級:是一個菜單選項,包括公司上司、部門上司、普通員工;

3.授權定義表:

用于給角色配置設定通路權限以及為每個子產品配置設定操作權限;

1個角色可以含有多個子產品,同樣1個子產品可以配置設定給多個角色,是以角色和子產品是多對多的關系;這種多對多的關系可以使用關系表來實作,即通過聯合主鍵和實作關系表:

【資料庫設計-2】權限設計-系統登入使用者權限設計

表中含有字段“操作權限”,用于給每個界面配置設定操作權限,見下圖:

【資料庫設計-2】權限設計-系統登入使用者權限設計

若該子產品有增删改查功能,則操作權限15,即二進制的“1111”,若該子產品隻有檢視功能,則操作權限為2,即二進制的“0010”,同樣的,“0111”表示該子產品有增、改、查功能;

4. 系統使用者表:

【資料庫設計-2】權限設計-系統登入使用者權限設計

該表中“角色權限等級”--->應與“所屬角色”中的權限等級保持一緻,之是以該表中重複該字段,是為了友善查詢。

角色權限等級取值:

  1. 公司上司:company_id不能為空;

company_id、dept_id不能為空;

company_id、dept_id、staff_id不能為空;

登入執行過程

1. 系統登入時,首先輸入使用者名、密碼;

2. 确定通路權限:

   2.1 判斷該使用者的“角色編号”;

   2.2 在“授權定義表”中根據該“角色編号”查找相應的子產品,找到的子產品集合即是通路權限;

3. 确定操作權限:

操作權限,即構成了每個子產品的操作權限;

4. 确定權限等級:

   4.1 結合該使用者的“角色權限等級”+“公司辨別”+“部門辨別”+“員工辨別”,到員工資訊表中去查找相應員工,具體如下:

   角色權限等級取值:

員工資訊表.公司辨別==該使用者.公司辨別>的所有使用者;

查找<員工資訊表.公司辨別==該使用者.公司辨別 && 

                                  員工資訊表.部門辨別==該使用者.部門辨別>的所有使用者;

查找<員工資訊表.公司辨別==該使用者.公司辨別 && 

                                  員工資訊表.部門辨別==該使用者.部門辨別 && 

繼續閱讀