![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 蒼鴻 ![]()
![]() |
目前小弟自己開發ERP,碰到一個問題~~! 需要用權限系統~~! 俺開發的ERP目前有19種功能 每種功能有三種狀態 (0:可管理 1:不可管理 2:不顯示) 以下小弟以表格方式來講 功能簡稱 a b c ....19種 權限排序 0 1 2 ....... 權限排序 1 1 1 ....... 以此類推19種功能+3種狀態的組合 小弟的土法煉鋼法 01201201001200120存入資料表 再用Switch去配 不過奈何組合太多 所以才上線請叫各方高手/前輩 有什麼設計原理可以點點小弟~~! 不用code 跟俺說原理小弟俺來try and coding就好嚕~~! 第一次設計這種沒有頭緒~~! 小弟先跟各位大大們說謝謝~~! 如有問題不清楚 請跟小弟俺說~~!
搜尋相關Tags的文章:
[ 設計原理 ] ,
本篇文章發表於2012-10-30 15:19
== 簽名檔 ==
PHP新手上路~~!努力學習中~~俺會的俺會分享~~! 個人網站:http://hung.66rt.com/ MSN:chingfeng18@hotmail.com [歡迎交流] |
1樓
作者回應
蒼鴻 ![]() |
補充說明:
俺使用 CodeIgniter 使用 MC + V架構
本篇文章回覆於2012-10-30 15:33
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
2樓
不錯的參考
香帥 ![]() |
另外一種方法為狀態歸類法
0abdef... 1hkc... 2ghi.... 當要管理時,只抓0類,其它依此類推
本篇文章回覆於2012-10-30 21:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
3樓
最有價值解答
Solty ![]() |
你用MVC,事情就很簡單阿
ACL這東西就是6個要素 account 帳號 role 角色<--其實這玩意說破了就是群組概念 resources 資源<--這就對應到你的controller function 功能<--這就是你的abc,對應到你controller中的action action 行為<--這就是你的012,資料表角度來說就是增,刪,查,改 permission 權限<--這層多數狀況不需實作,除非你有必要細控到每個表的欄位都要控制 1個帳號可以分飾多個角色 1個角色可以存取多個資源 1個資源可以有多個功能 ....etc 每層間都是一對多的關係,這樣有了解?
本篇文章回覆於2012-10-30 21:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
4樓
作者回應
蒼鴻 ![]() |
謝謝Solty,香帥 大大:
小弟俺研究一下~~!
本篇文章回覆於2012-10-31 08:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
5樓
作者回應
蒼鴻 ![]() |
俺看了一下忘記說需求(眾歐
俺的權限系統屬於 金字塔的架構方式 頂端群組 (就一個管理員群組) 頂端群組開的次等群組 (這個群組所有權限由頂端群組給予) 次等群組裡面的個別小帳號 (個別小帳號的權限由次等群組給予) 權限給予範例 頂端給予次等 15個功能權限 所以次等群組可以給他底下的帳號15個功能權限
本篇文章回覆於2012-10-31 08:30
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
6樓
作者回應
蒼鴻 ![]() |
俺看了一下忘記說需求(眾歐
俺的權限系統屬於 金字塔的架構方式 頂端群組 (就一個管理員群組) 頂端群組開的次等群組 (這個群組所有權限由頂端群組給予) 次等群組裡面的個別小帳號 (個別小帳號的權限由次等群組給予) 權限給予範例 頂端給予次等 15個功能權限 所以次等群組可以給他底下的帳號15個功能權限 Solty大大: resources 資源 地方可以幫小弟俺解釋一下嗎?? 感激不盡~~~ orz~~!
本篇文章回覆於2012-10-31 08:33
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
7樓
作者回應
蒼鴻 ![]() |
小弟邏輯整理一下~~!
一個帳號在某群組,該群組可使用什麼功能,和在此功能有什麼權限~~! ex: accout=test; Groups=test; function=a,b,c,d,e,f; action=0,1,2,0,1; permission={Admin or User}
本篇文章回覆於2012-10-31 08:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
8樓
不錯的參考
浩瀚星空 ![]() ![]() |
首先我先理清幾個問題。
我想知道為何你需要「不顯示」的狀態。因為權限選項值如果不是開與關的話。就只能土法練鋼的方式。 正常來說~~~權限的定義方式及儲存的方式有非常的多 我比較喜歡用的還是2進位法的方式。但因為這只有開與關。而且其數值也有一定的最大值。 正常我最多就是存到2^30的值。也就是可以記錄30個權限開關值。 會事先定義各權限的對應值。用常數來定義。 如 define('P_A', 1); define('P_B', 2); define('P_C', 4); 這樣我在SQL內的操作就會比較單純,如我要加入A權限。則 (欄位我用中文字代替,但請勿用中文字欄位) $sql = "UPDATE db SET 權限值 = 權限值+if((權限值 & ".P_A.") ,0,".P_A.")"; 要關閉A權限就用 $sql = "UPDATE db SET 權限值 = 權限值-if((權限值 & ".P_A.") ,".P_A.",0)"; 以上我沒給WHERE的條件,你得要自行加入。 當然~~~這只能應付開與關而已。如你要求的要開、關、不顯示三種狀態的話就不太適合。
本篇文章回覆於2012-11-01 18:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
9樓
作者回應
蒼鴻 ![]() |
土法煉鋼...
俺現在是用兩個資料表 第一個資料表 功能列表 第二 users 功能列表把功能先分類 class class1 class2 class3 把功能分成4個分類 在分四個功能篩選 C C1 C2 C3 users table 裡面欄位會有分類 class class1 class2 class3 第一個先篩選分類顯不顯示 EX:class = 0 or 1 俺這是先使用class過濾,在想class分多一點 用土法煉鋼比較輕鬆 兩個一組 01 10 11 12 21 22 02 20 把組合結果用少一點~~!
本篇文章回覆於2012-11-02 09:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
10樓
作者回應
蒼鴻 ![]() |
Solty,香帥,星空大大:
感謝三位大大,這樣小弟有方向了~~!
本篇文章回覆於2012-11-02 10:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
11樓 |
這樣的設計靈活性不夠。未來如果要增加或移除就還得要來修改程式
本篇文章回覆於2012-11-02 10:42
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
12樓
作者回應
蒼鴻 ![]() |
三個基準值
$P=0;(有管理權限) $P1=1;(只能顯示) $P2=2;(不顯示) 如果再群組那邊新增欄位對應功能呢?? 功能俺會再做刪減 有些共用功能 可以比較鬆 EX:討論區(可以省略$P2)
本篇文章回覆於2012-11-02 10:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |