LiveUser 資料庫設計
如果要探討 LiveUser 的設計,我覺得可以從資料庫開始去探討。 LiveUser 最主要包含兩部分,Authentication 跟 Permission'; 而 Authentication 最主要負責的就是使用者資料的管理,例如帳號、密碼等等;至於 Permission 當然就是管理使用者的權限,例如程式或區域的管理等等。
先從 Authentication 部份來談起,Authentication 簡單來說就是去檢查帳號密碼是否存在,而這就是 liveuser_users table 所需要負責的工作。裡面的欄位如下;
auth_user_id: 這個值主要是當作 primary key,比較沒有什麼實際的意義。
handle: 登入時輸入的帳號
passwd: 登入時輸入的密碼
is_active: 代表該帳號是否已經被啟動
lastlogin: 代表上次登入的時間。
如果你只是要使用到 authentication 部份,上面的 table 就足夠了,不過如果只是要使用到 authentication 應該也沒必要使用 LiveUser 吧 :) 另外有人可能會說,可是我的 table 名稱或是欄位名稱不見得是這樣啊,當然 LiveUser 不會限制只能夠使用特定的名稱,當然也允許你有額外的欄位 (比如 email、address 等等)。LiveUser 透過設定 LiveUser 的時候會指定 alias 名稱,所以即使你使用的是其他名稱,同樣也可以套用上來。
(例如 login => handle,password => passwd)
再來就是談到 Permission 部份,在上面的 LiveUser Database Schema 中可以發現分成三種顏色,綠色、藍色跟紅色。這是因為 LiveUser 的 Permission 管理分成三個等級 - Simple、Medium 跟 Complex;不同顏色代表的是各 Permission 層級所需要使用到的 Table。另外這三種 Permission 層級也具有繼承的關係;Medium 繼承自 Simple,Complex 繼承自 Medium。
串連著使用者資料跟權限的就是 liveuser_perm_users table,這個 table 的欄位資料如下:
perm_user_id: liveuser_perm_users 的 primary key
auth_user_id: foreign key 指向 liveuser_users
auth_container_name: authentication container 的名稱 (在設定檔會提到)
perm_type: Permission type,總共有底下幾種 permission
除了 liveuser_perm_users table 之外,Permission 部份主要包含 liveuser_rights、liveuser_areas 跟 liveuser_applications 三個 tables (先不考慮 complex level)。這三個 table 之前的結構可以用下面的圖示來表示;每個 Application 可以分成不同的 Area,而每個 Area 又可以有不同的權限,而權限可以指定給 user。這幾個 table 的欄位都很基本,xxx_define_name 代表名稱、xxx_id 代表 primary key,另外就是透過 foreign key 來連結這三個 tables。
另外 liveuser_groupusers、liveuser_groups 跟 liveuser_grouprights 這三個 table 主要是用來將 user 做 grouping、並且 assign group 權限。例如在 windows 系統裡面,你可以指定某個 user A 為 Administrator group,也可以指定 B 為 Administrator group,然後根據系統的權限設定,只要 Administrator group 可以做的事情,A 跟 B 都可以做。
另外 complex level permission 管理還允許將 subgroup、權限繼承的概念,這個在 Database Schema 圖示中也可以看到。
網路上一篇介紹 LiveUser 的文章 - http://www.php-mag.net/magphpde/magphpde_article/psecom,id,595,nodeid,21.html
沒有留言:
張貼留言