新聞中心
導(dǎo)讀:

成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:做網(wǎng)站、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的烏魯木齊網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
一個用戶登錄系統(tǒng)之后,可以訪問哪些站點,那些菜單,那些模塊,那些頁面,那些按鈕,都是可以通過權(quán)限進(jìn)行控制的。 一個權(quán)限做的比較完整的項目,一般人員管理,消息管理,菜單管理,站點管理,日志管理,部件管理,權(quán)限管理等等都是受權(quán)限控制的,這么多模塊每個功能點是如何在權(quán)限管理下跑的井井有條呢?最近老是看到很多人在發(fā)愁權(quán)限,所以把自己的一些見解寫出來,供大家參考,也只是自己的一點點思路,不足的地方,謝謝指出。
問題:剛開始做模塊的時候,模塊寫好了,被測試提過來“你的日志模塊功能點不受權(quán)限控制”,當(dāng)時就很模糊,什么是權(quán)限呀,去問測試人員,她打開一個頁面,上面有棵功能樹(很大,顯示各個模塊,以及模塊下面的操作),你的所有的功能點都沒在功能點樹上顯示,只有顯示在樹上的才可以把功能點分配給人,自己查去吧?;貋砜戳讼聞e人的代碼,呵呵原來一個模塊開發(fā)完之后需要給當(dāng)前模塊所有功能點注冊權(quán)限。帶著測試出的這個BUG,跟大家一起分享下一些知識點,以及權(quán)限的核心思想吧。
1.什么是權(quán)限?
“權(quán)限就是有票你就進(jìn)”
去游樂園,去乘大巴,去坐地鐵,必須的買票吧?權(quán)限就像你手里的那張票。
“權(quán)限就是認(rèn)證不認(rèn)人”
權(quán)是"權(quán)力,制度",限是“限制,管理”,連起來就是:XXXX通過權(quán)力,制度去管理XXX,在現(xiàn)在中國有12多人口,政府也給每個人發(fā)了證“身份證”,抗日時期小日本通過“良民證”去管理“中國人民”,看來受管理的都有一個特點就是“他有證”。
2.你要給誰設(shè)權(quán)限----誰就是我們所說的功能點
我們要清楚的明白,我們要給系統(tǒng)里的用戶角色站點日志等等模塊設(shè)權(quán)限,讓有權(quán)限的人去管理自己權(quán)限下面的操作。
“你要用誰要去控制誰,你的功能點的粒度有多大”
第一個誰一般是用戶;第二個誰很可能是一個模塊(日志模塊),一個表對象,一個表里面的一條記錄,甚至是一個頁面的一個方法,甚至是一個安牛,你所謂的 功能點可以是上面的所有東西,但是你一定要明白誰要控制是誰?一般可以細(xì)化到一個模塊,一個頁面,頁面的一個“刪除”,“添加”按鈕。
3.怎樣去控制?
怎樣去唯一標(biāo)識這個“控件”,“方法”,“類”(也就是我說的功能點)
"給每個'按鈕'一個身份證"既然權(quán)限是“權(quán)限就是認(rèn)證不認(rèn)人”,那么當(dāng)然的給沒個功能點加一個唯一標(biāo)識了。唯一標(biāo)識一般的方法是“模塊名稱+控件的ID”。
天呀,這不是要殺了我嗎?這么多,沒辦法,嘻嘻,你必須這么干
4.權(quán)限管理模塊一直在干什么樣的工作【核心】
1.)當(dāng)一個用戶進(jìn)系統(tǒng)之后,可以拿到這個用戶所有有可以控制功能點的信息
比如可以拿到有權(quán)限的站點,有權(quán)限的菜單,有權(quán)限的模塊,有權(quán)限的頁面等等。
2.)拿到系統(tǒng)里面所有的功能點,然后把它分配給希望分配的角色或者用戶
權(quán)限管理模塊必須可以拿到系統(tǒng)里面你配置的所有的功能點(最好以一棵功能樹的形式展現(xiàn)出來),并且可以把權(quán)限分配給一些人員,角色,有權(quán)限的用戶可以把自己的權(quán)限分配給別人,權(quán)限大的用戶可以控制所有信息。
3.)當(dāng)開發(fā)人員開發(fā)一個新的模塊的時候,只要做簡單的操作就可以把新的功能點注冊到權(quán)限里面,權(quán)限模塊必須提供一個可擴展的功能,當(dāng)系統(tǒng)里面多一個模塊的時候,可以讓開發(fā)人員迅速的注冊功能點(一般是XML格式)。
4.)當(dāng)用戶發(fā)送一個請求的時候,能返回當(dāng)前用戶是否能操作該按鈕(控件,對象)
開發(fā)人員只要把當(dāng)前用戶的Id與功能點的ID給權(quán)限服務(wù)就可以返回當(dāng)前用戶是否有操作當(dāng)前對象的權(quán)限
5.)權(quán)限管理模塊有自己內(nèi)置的潛規(guī)則,也就是優(yōu)先級
當(dāng)兩個權(quán)限發(fā)生沖突的時候,靠我們自己定義的優(yōu)先級進(jìn)行匹配
5.程序開發(fā)人員開發(fā)一個新的模塊如何注冊權(quán)限的?
1.)寫你的模塊代碼
2.)把你模塊的功能點都注冊到權(quán)限樹上(把你功能點寫到XML上),各個功能點進(jìn)行驗證【如果沒有這個驗證,功能點雖然掛到權(quán)限上了,但實際上是沒受權(quán)限限制的】
3.)超級管理員進(jìn)來,可以操作權(quán)限樹,把你的功能點權(quán)限分配給別人
5.)分配你權(quán)限的賬戶可以訪問你頁面上的操作
解決問題:“你消息模塊的刪除按鈕不受權(quán)限控制”如何修這個BUG?一個按鈕不受權(quán)限限制?怎么受權(quán)限限制呀?
1.)首先的把當(dāng)前按鈕的ID注冊到權(quán)限(模塊名+功能點名)一般這個就可以唯一標(biāo)識你當(dāng)前的ID
2.)然后在你當(dāng)前控件代碼里面寫,根據(jù)這個身份證去權(quán)限請求一個服務(wù),if(有權(quán)限)按鈕可用ELSE按鈕不可用【如果沒有這個驗證,功能點雖然掛到權(quán)限上了,但實際上是沒受權(quán)限限制的】
3.)最后權(quán)限好用不好用只有測試人員去測了
備注:對于以些小的網(wǎng)站,其實我認(rèn)為權(quán)限設(shè)置到頁面級就可以了,沒必要注冊到所有的操作
分享名稱:淺談如何設(shè)置項目中每個功能點的權(quán)限
分享鏈接:http://m.5511xx.com/article/ccsghep.html


咨詢
建站咨詢
