[Title ] 關(guān)于用戶角色權(quán)限管理一點(diǎn)想法
[Author] Pizer.Chen
[Email ] Iceant@21cn.com | iceant@vip.163.com
[Date ] 2002-11-3
----------------------------------------------------------------------------
我以前設(shè)計(jì)過(guò)一個(gè)權(quán)限系統(tǒng)的模型,但是我沒(méi)有實(shí)現(xiàn),
可以說(shuō)出來(lái),大家討論一下。
我認(rèn)為一個(gè)系統(tǒng)的權(quán)限部分應(yīng)該由以下四個(gè)部分組成:
[*] Resource
[*] Privilege
[*] Role
[*] User
另外,一個(gè)系統(tǒng)中最少有這么幾個(gè)角色:
[*] Creator, 也可以稱做 Programmer.
[*] Administrator, 超級(jí)用戶
[*] General User
----------------------
權(quán)限各部分之間的關(guān)系:
----------------------
1. Resource 就是系統(tǒng)的資源,比如部門新聞,文檔等各種可以被提供給用戶訪問(wèn)的對(duì)象.
2. Privilege 是 Resource Related 的權(quán)限。
什么意思?就是指,這個(gè)權(quán)限是綁定在特定的資源實(shí)例上的。
比如說(shuō)部門新聞的發(fā)布權(quán)限,叫做"部門新聞發(fā)布權(quán)限".
這就表明,該 Privilege 是一個(gè)發(fā)布權(quán)限,而且是針對(duì)部門新聞這種資源的一種發(fā)布權(quán)限。
我認(rèn)為,Privilege 是由 Creator 在做開(kāi)發(fā)時(shí)就確定的。
3. Role, 是角色,擁有一定數(shù)量的權(quán)限。
4. User, 與 Role 相關(guān)。在我設(shè)計(jì)的系統(tǒng)里,User是不能與 Privilege 直接相關(guān)的,
User 要擁有對(duì)某種資源的權(quán)限,必須通過(guò)Role去關(guān)聯(lián).
----------------------
系統(tǒng)大串聯(lián):(^_^)
----------------------
下面簡(jiǎn)單介紹一下,一個(gè)權(quán)限從開(kāi)發(fā)到使用的過(guò)程.
1. Creator 創(chuàng)造 Privilege, Creator 在設(shè)計(jì)和實(shí)現(xiàn)系統(tǒng)時(shí)會(huì)劃分,一個(gè)子系統(tǒng)或稱為模塊,
應(yīng)該有哪些權(quán)限. 拿新聞這一塊來(lái)說(shuō),可能應(yīng)該有:
[*] 發(fā)布權(quán)限(publish)
[*] 修改權(quán)限(modify)
[*] 審核權(quán)限(review)
[*] 瀏覽權(quán)限(visit)
.......
這里完成的是 Privilege 與 Resource 的對(duì)象申明,并沒(méi)有真正將 Privilege 與具體
Resource 實(shí)例聯(lián)系在一起.
2. Administrator 指定 Privilege 與 Resource Instance 的關(guān)聯(lián).
在這一步, 權(quán)限真正與資源實(shí)例聯(lián)系到了一起, 產(chǎn)生了 Privilege Instance。
比如,Administrator 創(chuàng)建了一個(gè)叫做 "部門新聞" 的Resource Instance.
然后將發(fā)布權(quán)限與這個(gè)資源相關(guān)聯(lián),產(chǎn)生出 "部門新聞發(fā)布權(quán)限" 這個(gè) Privilege Instance.
3. Administrator 創(chuàng)建一個(gè)角色,稱做 "部門新聞發(fā)布者".
4. Administrator 將 "部門新聞發(fā)布權(quán)限" 賦予 "部門新聞發(fā)布者".
5. Administrator 從用戶列表中選取一個(gè)或多個(gè)用戶,
然后給這些用戶賦予 "部門新聞發(fā)布者" 的角色
6. User 進(jìn)到系統(tǒng),在它的可訪問(wèn)資源列表上,會(huì)出現(xiàn)"部門新聞發(fā)布"的鏈接.
7. User 點(diǎn)擊 "部門新聞發(fā)布"的鏈接, 根據(jù) Creator 的實(shí)現(xiàn),系統(tǒng)會(huì)檢查
[1] 當(dāng)前用戶是否擁有發(fā)布權(quán)限
[2] 當(dāng)前用戶的發(fā)布權(quán)限是否與能操作正在訪問(wèn)的資源.
----------------------
結(jié)束語(yǔ)
----------------------
這是我一次在飛機(jī)場(chǎng)等飛機(jī)時(shí)突然設(shè)計(jì)出來(lái)的東西。因?yàn)闆](méi)有具體實(shí)現(xiàn),
而且也可能因?yàn)闀r(shí)間倉(cāng)促,沒(méi)有想得很透徹,希望寫出來(lái)大家討論一下。
具體實(shí)現(xiàn)上的技術(shù)問(wèn)題,我也想過(guò),我覺(jué)得應(yīng)該已經(jīng)想通,但是介于時(shí)間關(guān)系,
這里寫不了啦,大家可以談?wù)効捶?.
聯(lián)系客服