對許可權控制又很深入的討論(1)

來源:互聯網
上載者:User
控制 我也請教一個關於許可權設計方面的問題

我現在在做一個系統,一個類似資訊發布的東東,本來也無所謂,可沒想到使用者提出了許多BT的要求,尤其是許可權方面,本來照我的常規思維,這種東東一般也就是劃分幾個角色,劃分幾個資訊的發布模組等等也就行了,甚至公司都有現成的東西直接用。
可沒想到客戶的要求比較刁鑽。我先說說系統的大概模樣。
資訊發布嗎,首先當然要劃分資訊的類別和層次,而這層次是不定的,可能是兩三層,也可能是十層、八層(沒這麼變態吧^_^),其實就類似與windows的資源管理員的樣式,目錄裡面含著檔案,而檔案又有可能和目錄平級的說,這是顯示方面大概要顯示的東東。現在說說他們在許可權控制方面的要求,某個使用者登入系統之後,這些目錄檔案(使用的是資源管理員類似的樣式,左邊一顆樹,右邊基本資料列表)將需要根據使用者權限的不同而不同(有的目錄檔案顯示,有的不顯示的說),當然對於不同的記錄使用者也需要有不同的增刪改許可權,列表雖然都能看見,不過有的記錄他可以修改卻不可以刪除,有的卻連修改都不許了,當然還有其他的一下操作方式的控制。更為變態的是,要求點擊某條記錄(或目錄、或檔案)時彈出的資訊查看頁面對於不同許可權的使用者也需不同,即某些欄位可以顯示,某些欄位不能顯示(my god,還是把我回收了得了),這就要求在背景管理方面有著靈活的操作,當然使用者也要求了,本著易用性的原則,管理員可以適當選擇是對一條條記錄賦權還是對一批記錄賦權。

說了這麼多,不知道各位能否看明白?

我開始的想法是定義組,將某些許可權相同的使用者賦為一組,然後對記錄賦權時根據組進行選擇而不用對每個人進行選擇,這樣就不需對個人進行操作(即使一個人也給他搞個組),這樣對組配置改組可以對記錄有那些許可權,可以顯示記錄的那些欄位,然後針對記錄選擇組(一個使用者可能屬於多個組,如有重複,則以使用者能獲得的最大許可權為主)。
不過後來一想,加入某些記錄只是針對個人的,如果也這麼做的話,會死人的啊,組的數量就太多了。

不過使用者的這些要求說到底其實也挺合理,不過實現起來也確實挺頭疼,反正我頭疼了一個下午了,幾張目錄檔案的表畫好後,後台許可權方面我死活下不了手了:(
我也希望能夠趁這個系統的機會把這個許可權管理好好核計核計,反正盡量希望能在設計階段就考慮完善,最好能將許可權這塊盡量獨立出來,將來在其他系統中可以比較方便地移至(估計也沒那個資訊系統有這麼繁瑣的要求了,本來不大的玩意,愣是讓他們搞大發了)

但本人在設計方面是個新手,所以感覺難度實在挺大,還是先聽聽各位在座的高論先,請指教一下該如何下手,資訊表與許可權表該如何關聯,如果有誰做過這方面的東東的話,那就更好了。

所有經驗、方法、建議,在下一律歡迎,還請各位不吝賜教,我實在是頭都大了


Re: 我也請教一個關於許可權設計方面的問題 發表時間: 2003年10月22日 00:36:37 回複

發表人: iceant 發表文章: 413 / 註冊時間: 2002-10
1. 對"有的目錄檔案顯示,有的不顯示的"疑問
具體到一個目錄下的檔案是可以控制顯示與不顯示,但是對目錄而言不適合做這樣的控制。為什嗎?假如使用者只對 1.1.1 目錄有存取權限,那麼 1.1 的目錄層級要不要體現出來?如果只列使用者有許可權的目錄,那怎麼能看得出是 1.1.1 的那個目錄?

2.組與使用者
你的應用實際上是動態責任確定的應用,在程式規劃與實施階段沒有辦法獲知有哪些角色能操作哪些對象;
另外,許可權設計不可過於複雜,否則管理員也會弄不清自己分配的許可權是什麼樣的,最少我自己加個兩三層的東東就會頭暈。
因此我建議你做基於 ACL 的控制。你提到了想使用組的概念,但是你想為一個人也定義一個組,我認為沒有必要,完全可以是使用者(User)與 Subject(Folder|Documents)直接對應。如果只能有一個人操作一個目錄的檔案修改,那你直接授權給某個人,和修改 Role-User Map 關係的維護量沒有多大的差別。但是如果對一個目錄同一種 Permission 的操作分別授權給不同的使用者,維護起來肯定沒有建個組或一個角色來得簡單。

因此,我的選擇是直接使用 Subject,Group,User 的三級關係。
這裡先解釋幾個名詞:
Subject: 各種目錄,檔案等對象
Group: 使用者集合
User:使用者
Operation: 對 Subject 的某種具體操作,如 Visit,Modify,Delete 等
Permission: 是 Subject 與 Operation 的組合,如:指對某個目錄的Visit操作

OK, 那讓我們來建幾個表吧:
Permissions_Table(
subject varchar(20),--對應目錄或檔案的ID
user_name varchar(10), -- USER-Subject ACL
group_name varchar(10), -- Group -Subject ACL
operation_type int, --1:visit,2:modify 4:delete,3:visit+modify,5:delete+visit,6:delete+modify,7:visit+modify+delete
subject_type int, --1:dir,2:document
)

user_group_table(
user_name varchar(10),
group_name varchar(10),
primary key(user_name,group_name)
)

再下面....
我相信你有能力做完的....



Re: 我也請教一個關於許可權設計方面的問題 發表時間: 2003年10月22日 10:02:00 回複

發表人: ninsky 發表文章: 20 / 註冊時間: 2003-10
感謝iceant,你的意見給了我一個思路,某些地方我確實走入了歧途,也盲目的想設計一個通用的東東(估計這就是過度設計)

不過我還想請教一下就是,對於控制到欄位的許可權模式你能否也提供一點建議呢

我現在就是想多找些人,聽一下別人的意見,然後再自己綜合一下,希望能夠盡量好的實現這套許可權管理功能

希望各位多多發言,希望能對我這已經困累欲絕的大腦來點刺激

再次感謝iceant,jdon的討論風氣是我轉的幾個論壇中最好的一個了



Re: 我也請教一個關於許可權設計方面的問題 發表時間: 2003年10月22日 11:16:11 回複

發表人: iceant 發表文章: 413 / 註冊時間: 2002-10
"對於控制到欄位的許可權模式你能否也提供一點建議呢"

什麼叫控制到欄位的許可權模式?



Re: 我也請教一個關於許可權設計方面的問題 發表時間: 2003年10月22日 12:19:51 回複

發表人: ninsky 發表文章: 20 / 註冊時間: 2003-10
> "對於控制到欄位的許可權模式你能否也提供一點建議呢"
>
> 什麼叫控制到欄位的許可權模式?

就是對於某個表中的某些欄位是可以顯示的,而某些是不顯示的

當然有個方法是將所有的表的欄位及相關的描述資訊放到一個資料字典表中,然後對資料字典進行一些相關的賦權操作,不過這樣作要求資料字典和所有的表的欄位同步

不過總感覺這種方法並不是太好,不過我也沒想到其他的方法



Re: 我也請教一個關於許可權設計方面的問題 發表時間: 2003年10月22日 12:29:24 回複

發表人: iceant 發表文章: 413 / 註冊時間: 2002-10
能不能詳細說說你的應用情景? 舉個例子



Re: 我也請教一個關於許可權設計方面的問題 發表時間: 2003年10月22日 13:41:19 回複

發表人: ninsky 發表文章: 20 / 註冊時間: 2003-10
> 能不能詳細說說你的應用情景? 舉個例子

使用者、單位等資訊儲存在LDAP中,而且是遠端,我的系統雖說取的是LDAP中的使用者、單位資訊,可是還得提供額外的使用者、單位增加功能,也就是說在讀取使用者、單位資訊時要將LDAP中的資訊與自己增加的使用者、單位資訊匯合,重新進行樹狀排列(這個地方採取產生XML樹的方式,不知效果如何),與此同時還要判斷目前使用者的許可權,以便控制各節點是否顯示(這些節點可能是單位,也可能是個人)。

然後對各個節點顯示的資訊還得讀取控制許可權,那些資訊可以顯示,那些不能顯示,另外對各個資訊的操作許可權也有控制,對某條資訊是增、刪、改,還是僅僅查看。而對於某條記錄的詳細資料,又需控制某個欄位是否顯示,等等等等,如此這般

我的初步構想:
劃分功能點:功能模組(不同使用者有不同的操作模組,如我們一般程式頂的功能表項目,非LDAP和相關資訊)、表結構(資料字典表,控制到欄位許可權時用)
操作(operate):增、刪、改、查看
角色:賦功能模組,及相關操作
使用者:賦角色
組:賦使用者

算了,就說這點吧,我也暈了,現在思路很亂



Re: 我也請教一個關於許可權設計方面的問題 發表時間: 2003年10月22日 13:54:05 回複

發表人: iceant 發表文章: 413 / 註冊時間: 2002-10
我的感覺是你對需求不明確,建義你回去和客戶坐下來談談他們想要的東東。你可以把操作的介面畫出來,然後問問客戶是不是想這樣操作,如果不是,怎麼改動,最後要一個需求更改說明書(可能要你寫,客戶簽字,這也是對你自己的一種保護!),說明確定下來的需求是什麼。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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