<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    1+1=2,0+0=0

    日月累積
    posts - 7, comments - 50, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    最近項(xiàng)目的項(xiàng)目很奇怪,一個(gè)大項(xiàng)目(系統(tǒng))里包含了很多小的子系統(tǒng),而這些子系統(tǒng)中都有權(quán)限控制的部分,這件事情挺讓我頭痛的,記得一年前在沈陽,我曾經(jīng)有一段時(shí)間也因因這個(gè)問題而疲于奔命,為什么說疲于奔命呢?由于當(dāng)時(shí)項(xiàng)目進(jìn)度不允許,導(dǎo)致最終系統(tǒng)權(quán)限模塊草草了事,每個(gè)模塊都是由讀權(quán)限字符串來控制用戶ACL,當(dāng)用戶無法訪問時(shí),提示權(quán)限不夠。這么做對(duì)用戶是很不負(fù)責(zé)任的,既然讓用戶看到了操作的方式和界面,為什么又告訴用戶沒有權(quán)限呢?我開始懷疑我們是否應(yīng)該在底層就封殺用戶的訪問權(quán)限。

    現(xiàn)在項(xiàng)目開展起來了,雖然目前我已經(jīng)有了對(duì)權(quán)限控制的一套方案,并且實(shí)施成了我的可重用框架代碼,雖然目前的權(quán)限也是基于眾星捧月的AOP思想,但我至今對(duì)權(quán)限設(shè)計(jì)仍有兩個(gè)疑惑:

    疑惑一:很多同行提出方案,想要在底層就截取用戶權(quán)限,控制用戶對(duì)方法或者類的訪問。這樣做的好處在于可以將系統(tǒng)功能與業(yè)務(wù)邏輯松散耦合,并且實(shí)現(xiàn)簡(jiǎn)單,結(jié)構(gòu)清晰,三兩個(gè)advisor、filter,或者acegi就能搞定,但在web程序中體現(xiàn)出了他的劣勢(shì),當(dāng)我們將用戶的訪問拒絕在業(yè)務(wù)邏輯之外的時(shí)候,我們此時(shí)是否應(yīng)該拋出異常提示用戶?一旦提示用戶沒有相應(yīng)的權(quán)限,我認(rèn)為對(duì)于用戶來說,這就不是一個(gè)perfect practice。由此得出,我們根本就不應(yīng)該讓用戶做此次操作,而控制用戶操作的源頭就是界面,也就是說,在界面上我們就應(yīng)該對(duì)用戶的權(quán)限元素(如添加按鈕、功能菜單等)進(jìn)行控制。此時(shí),一對(duì)矛盾出現(xiàn)了,要控制界面上形形色色的元素只有兩種辦法,一,將權(quán)限與你的界面結(jié)合起來設(shè)計(jì),這將違背AOP的思想,也使得系統(tǒng)控制模塊的重用性大大下降,二,我們借鑒primeton的想法,將權(quán)限控制的理念抽取出來,單獨(dú)做成一套權(quán)限系統(tǒng),解決你所有的需要權(quán)限控制的系統(tǒng)需求,這樣也有令人頭痛的問題,你的所有想用它來控制權(quán)限的系統(tǒng),必須界面上統(tǒng)一風(fēng)格?;蛟S這樣的方式對(duì)商業(yè)web系統(tǒng)是合適的,畢竟需要你大刀闊斧個(gè)性化的地方不多,但我們卻很難保證在未來幾年內(nèi)商業(yè)web系統(tǒng)的風(fēng)格不改變。再者,開發(fā)這么一個(gè)系統(tǒng)也不是一蹴而就的事,在這個(gè)問題上一直讓我困惑不已。


    疑惑二:大多應(yīng)用的權(quán)限判定是基于權(quán)限字符串的,但存儲(chǔ)在數(shù)據(jù)庫中的權(quán)限字符串能夠判定的權(quán)限并不多,在我們這次項(xiàng)目中,我引用了基于二進(jìn)制的8421權(quán)限判定法則,我深深的感覺到權(quán)限字符串的弱勢(shì),這使我想起了中國古老一套數(shù)學(xué)理論-“盈不足術(shù)”,超遞增序列的魅力在我眼前滑過,

    首先我來解釋一下盈余不足理論:有十只盒子,第一個(gè)盒子里放一個(gè)盤子,第二個(gè)盒子里放兩只,第三個(gè)盒子里放四只,第四個(gè)盒子里放八只……第九個(gè)盒子里放256只,第十個(gè)盒子放512只,即第N只箱子里放2^(N-1)只盤子,一共1023只。那么命題如下:在1023這個(gè)數(shù)字之內(nèi),任何一個(gè)數(shù)目都可以由這十只盒子里的幾只組合相加而成。那么1、2、4、8、16、32、64、128、256、512這個(gè)序列為什么有這么個(gè)魔力?這個(gè)數(shù)列的特點(diǎn):1、每項(xiàng)是后一項(xiàng)的二倍,2、每項(xiàng)都比前面所有項(xiàng)的和大,而且大1。這個(gè)1就是關(guān)鍵,就因?yàn)檫@個(gè)1,它才可以按1遞增,拼出總和之內(nèi)任意一個(gè)整數(shù)。這個(gè)序列叫做超遞增序列,它是解決背包問題的基礎(chǔ)。3、拼出總和之內(nèi)任意一個(gè)整數(shù)可以由這個(gè)序列中的一些數(shù)構(gòu)成,且構(gòu)成方法唯一,據(jù)說是密碼學(xué)中的NP定理。譬如說這個(gè)數(shù)列總合中20這個(gè)數(shù),只能由16+4一種方法構(gòu)成,由此延伸出來,如果綜合中這個(gè)數(shù)據(jù)代表一個(gè)權(quán)值,我們可以解出它的所有構(gòu)成參數(shù)(操作),如20這個(gè)數(shù)據(jù),我們可以挨個(gè)和序列中每一項(xiàng)按位與,得出來如果不等于0,就說明他是由這個(gè)數(shù)構(gòu)成的。

    保存權(quán)值到int還是varchar對(duì)于我們來說是個(gè)問題,當(dāng)然,保存字符串的好處是運(yùn)算壓力小。我們可能聽過一個(gè)故事,就是把這個(gè)超遞增序列延伸到第64項(xiàng),就是那個(gè)術(shù)士和皇帝在國際象棋棋盤上要米粒的傳說。64項(xiàng)的和是一個(gè)天文數(shù)字!但計(jì)算機(jī)本身就是一個(gè)只認(rèn)識(shí)二進(jìn)制的機(jī)器!很多程序員整天只關(guān)心架構(gòu),甚至不知道或者不關(guān)心位操作是什么玩意,當(dāng)然我們有朋友擔(dān)心數(shù)據(jù)庫的int不夠長,那么既然可以保存一個(gè)只有0、1組成的varchar字符串,為什么不能保存一個(gè)十六進(jìn)制的字符串,有人規(guī)定varchar只能保存01嗎?十六進(jìn)制串的長度正好是二進(jìn)制的四分之一。

    由此我們可以無限制的擴(kuò)展權(quán)值操作。

    在最近的項(xiàng)目里,我對(duì)權(quán)限的控制分成兩個(gè)部分,第一就是用戶體驗(yàn)上,我設(shè)置了一個(gè)權(quán)限標(biāo)簽,從數(shù)據(jù)庫中抽取權(quán)限信息,然后做到標(biāo)簽里,也湊或算成是界面AOP了,第二就是底層的攔截,用了Spring 的AOP,為的是防止權(quán)限沖突,雙管齊下。暫時(shí)解決權(quán)限所需,另外在算法上我用了16進(jìn)制的權(quán)限判別代碼,雖然配置較麻煩,寫完代碼還要寫文檔說明,不過也解決了權(quán)限繁雜又多的問題,暫時(shí)就這樣了,嘿嘿,以后有空再研究。


    評(píng)論

    # re: web開發(fā)中的權(quán)限設(shè)計(jì)拙見一二  回復(fù)  更多評(píng)論   

    2007-01-02 13:39 by ant
    如能結(jié)合些代碼談?wù)?,更佳。好文,關(guān)注!

    # re: web開發(fā)中的權(quán)限設(shè)計(jì)拙見一二  回復(fù)  更多評(píng)論   

    2007-01-02 14:29 by BeanSoft
    贊一個(gè)!

    # re: web開發(fā)中的權(quán)限設(shè)計(jì)拙見一二  回復(fù)  更多評(píng)論   

    2007-01-02 14:31 by 綠色使者
    其實(shí)上面用二進(jìn)制一下子就解釋清楚了,1,2,4,8就是二進(jìn)制的基,每一個(gè)十進(jìn)制數(shù)當(dāng)然可以用唯一的這些二進(jìn)制基表示出來啦

    # re: web開發(fā)中的權(quán)限設(shè)計(jì)拙見一二  回復(fù)  更多評(píng)論   

    2007-01-02 21:55 by jerson[匿名]
    字也太小了吧

    # re: web開發(fā)中的權(quán)限設(shè)計(jì)拙見一二  回復(fù)  更多評(píng)論   

    2007-01-02 22:22 by 海思
    是否可以把16進(jìn)制的權(quán)限判別代碼的相關(guān)代碼和文檔發(fā)份給我看看呢?
    我最近也在研究權(quán)限部分,由于對(duì)這塊不熟,比較頭痛,謝謝
    如果可以的話麻煩發(fā)份到我郵箱
    chmk35@163.com
    謝謝

    # re: web開發(fā)中的權(quán)限設(shè)計(jì)拙見一二(1)  回復(fù)  更多評(píng)論   

    2007-01-02 22:44 by 江上一葉舟
    首先對(duì)大家的關(guān)注表示感謝^_^
    另外由于我不會(huì)在評(píng)論信息中加載代碼,所以我將本文中的標(biāo)題后面加上了(1),我將在我隨后的幾篇隨筆中分別談一下我的權(quán)限分配的相關(guān)數(shù)據(jù)庫設(shè)計(jì)、數(shù)據(jù)庫與權(quán)限關(guān)聯(lián)配置、界面權(quán)限控制和底層攔截機(jī)制,小文確是拋磚引玉,謝謝關(guān)注~~:)

    # re: web開發(fā)中的權(quán)限設(shè)計(jì)拙見一二(1)  回復(fù)  更多評(píng)論   

    2007-01-02 23:04 by errorfun[匿名]
    嗯,不錯(cuò),和我做的第一個(gè)項(xiàng)目時(shí)的想法一樣,權(quán)限系統(tǒng)也用了這個(gè)8421的方式實(shí)現(xiàn),沒有權(quán)限的人就看不到菜單,看不到操作。這樣處理也是我覺得比較方便的做法了。不過后來是用了四個(gè)字段分別表示增刪改查這四個(gè)方法,1表示有權(quán)限,0表示沒權(quán)限。
    當(dāng)時(shí)也是想了很多方案后才決定了,因?yàn)閷?duì)于數(shù)據(jù)操作不外四種方式:查看,增加,修改,刪除。查詢,分析,報(bào)表之類的都可歸入查看之中。我是用數(shù)據(jù)庫保存權(quán)限的,因?yàn)橛X得但用戶很多權(quán)限也很多時(shí),數(shù)據(jù)庫的讀取比XML快上許多。只是在第一次讀取相關(guān)操作時(shí),加載所需的權(quán)限的數(shù)據(jù),加載完后以后訪問就不用再加載。而XML保存一般都在登錄時(shí)加載了所有權(quán)限,但XML在大量數(shù)據(jù)時(shí)讀取速度確實(shí)不感冒。

    # re: web開發(fā)中的權(quán)限設(shè)計(jì)拙見一二(1)----設(shè)計(jì)思路  回復(fù)  更多評(píng)論   

    2007-01-02 23:46 by 江上一葉舟
    呵呵,我目前所用到的權(quán)限種類繁多,所以權(quán)值也很多,權(quán)值基本的計(jì)算公式我就用了2的n-1次方,這樣權(quán)值可以無限擴(kuò)展,無論是增、刪、改、查、報(bào)表、上傳、下載,我都會(huì)分配一個(gè)權(quán)值,如果一個(gè)角色擁有多個(gè)權(quán)限,則這個(gè)角色的權(quán)值為他所擁有的所有權(quán)限的權(quán)值的和,我將權(quán)值的和以16進(jìn)制的形式記錄到庫中,基本上來說一個(gè)用戶對(duì)一個(gè)資源在數(shù)據(jù)庫中只有一條權(quán)限記錄

    # re: web開發(fā)中的權(quán)限設(shè)計(jì)拙見一二(1)----設(shè)計(jì)思路  回復(fù)  更多評(píng)論   

    2007-01-02 23:51 by 江上一葉舟
    另外對(duì)于權(quán)限的記錄來說,用數(shù)據(jù)還是xml文件來記錄我認(rèn)為主要不在讀取速度上來區(qū)分,因?yàn)榇蠖嘟巧珯?quán)限信息我會(huì)放入內(nèi)存中,所以xml還是數(shù)據(jù)庫來記載對(duì)我來說無所謂,但有一點(diǎn)區(qū)別是致命的,就是當(dāng)你修改權(quán)限信息時(shí),你需要修改相應(yīng)的紀(jì)錄,很明顯修改數(shù)據(jù)庫記錄要比修改xml文件來的方便,io操作還是挺讓人~~~嘿嘿

    # re: web開發(fā)中的權(quán)限設(shè)計(jì)拙見一二(1)----設(shè)計(jì)思路  回復(fù)  更多評(píng)論   

    2007-01-03 12:08 by errorfun
    怎么說呢,其實(shí)在以前我也考慮過你這個(gè)無限擴(kuò)展的問題,但仔細(xì)一想,權(quán)限不存在無限擴(kuò)展,權(quán)限基本的都是增刪改查,因?yàn)樗鼈兌际菍?duì)數(shù)據(jù)庫的操作,
    比如你說的上傳功能,它只不過是對(duì)上傳的內(nèi)容進(jìn)行增加操作,再如下載,也不過就是對(duì)上傳內(nèi)容的查看操作,你有查看權(quán)限了,自然有下載功能,有增加權(quán)限了,自然有上傳功能。
    再如報(bào)表,你不過是對(duì)報(bào)表這些內(nèi)容的查看權(quán)限,所以不存在擴(kuò)展性問題。
    不要被擴(kuò)展性所迷惑,我開始設(shè)計(jì)權(quán)限時(shí)也一度被8421的可擴(kuò)展性所迷惑,但最后想仔細(xì),其實(shí)也就只有四個(gè)操作而已,放成四個(gè)字段,比8421的方式容易修改,也容易知道有哪些權(quán)限,不用再進(jìn)行計(jì)算。就像你說你用16進(jìn)制存權(quán)限吧,如果我1表示查看,2表示增加,4表示修改,8表示刪除,那如果我進(jìn)行增加操作,那你就得判斷我的權(quán)值是否是2,3,6,7,10,11,14,15,這其實(shí)是增加的復(fù)雜性,權(quán)限系統(tǒng)本身就很復(fù)雜了,如果在權(quán)值上面還進(jìn)行人為的復(fù)雜化,而僅僅為的是不存在的擴(kuò)展性,那我覺得是得不嘗失的。
    如果是在小數(shù)據(jù)量時(shí),XML文件方式不是不錯(cuò)的,可惜權(quán)限本身就是大數(shù)據(jù)量的,針對(duì)這個(gè)問題其實(shí)我也想過一個(gè)解決方案:把每個(gè)人的權(quán)限放到一個(gè)XML文件中,因?yàn)獒槍?duì)個(gè)人的權(quán)限來說,相對(duì)還不算太大,然后用一個(gè)主XML存放相關(guān)文件的信息,而每個(gè)信息對(duì)應(yīng)的就是這個(gè)人員的KEY,能唯一查找到對(duì)應(yīng)的XML。這在某程度上應(yīng)該可以解決XML加載的速度問題,但覺得不安全,因?yàn)閄ML文件很難對(duì)其讀寫進(jìn)行權(quán)限控制,被人不小心刪除了或修改了,那也是一件麻煩的事,所以最終也沒用XML文件實(shí)現(xiàn)。

    # re: web開發(fā)中的權(quán)限設(shè)計(jì)拙見一二(1)----設(shè)計(jì)思路  回復(fù)  更多評(píng)論   

    2007-01-03 12:23 by errorfun
    PS:上面說的對(duì)權(quán)值的判斷,可以對(duì)16進(jìn)制進(jìn)行toBinaryString()進(jìn)行判斷第N位是否為1,但如果在權(quán)限設(shè)置頁面時(shí),用STRUTS標(biāo)簽是很難進(jìn)行這樣的判斷,一種方式是在頁面用嵌套JAVA的方式進(jìn)行處理判斷,另一種方式是在數(shù)據(jù)讀取后,在返回前進(jìn)行遍歷處理。第一種不用多說,現(xiàn)在還在頁面嵌套JAVA的做法已經(jīng)被人拋棄了,原因就不多說。第二種自然只是在效率上有所減少而已。取舍還是看你自己了

    # re: web開發(fā)中的權(quán)限設(shè)計(jì)拙見一二(1)----設(shè)計(jì)思路  回復(fù)  更多評(píng)論   

    2007-01-03 13:10 by 江上一葉舟
    1,樓上的或許還是沒有看懂我所說的權(quán)限設(shè)計(jì),倘若你的‘增加權(quán)限’設(shè)置為1,而a這個(gè)角色當(dāng)前所擁有的權(quán)值是30,那么只需要1&30進(jìn)行二進(jìn)制運(yùn)算,不等于0,則說明有增加權(quán)限,沒有你說的那么復(fù)雜。

    2,另外你所說的在頁面嵌入java代碼我不知是從何判斷,我是做好了一個(gè)現(xiàn)成的權(quán)限標(biāo)簽,包在你需要判斷的頁面元素之外,如你可以在頁面上這么寫:
    <privilege scope='session' operation='create' beanName='userinfo'>
    <input type="button" value="添加">
    </privilege>
    這樣系統(tǒng)會(huì)自動(dòng)為你判斷當(dāng)前用戶是否具有添加權(quán)限,從而為你設(shè)置頁面上是否顯示添加按鈕

    3,權(quán)限是人定的,我可以把對(duì)這個(gè)資源的增加定為一種權(quán)限,上傳定位一種權(quán)限,客戶可能要求此人只能上傳不能增加(我說的上傳是指以excel文檔的形式上傳上來,解析其中的數(shù)據(jù)并添加入數(shù)據(jù)庫中),都是有可能的,可能你還是認(rèn)為他們都屬于添加操作,但用戶就是要求你不能添加,只能上傳,只有它指定的人才能添加。另外我說的報(bào)表,不僅僅是察看,我們可以定義一種形式的pdf報(bào)表,將數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)出到pdf,并形成餅圖、曲線圖等,這和查看可以說完全是兩種不同的操作,所以權(quán)限是沒有限制的,也就是說實(shí)際系統(tǒng)中對(duì)一個(gè)資源的權(quán)限可能最多也就10種撐死了,但我們需要做到的是:無論對(duì)這個(gè)資源的權(quán)限如何擴(kuò)展,我們都可以應(yīng)對(duì),不是么

    # re: web開發(fā)中的權(quán)限設(shè)計(jì)拙見一二(1)----設(shè)計(jì)思路  回復(fù)  更多評(píng)論   

    2007-01-03 15:46 by errorfun
    1、確實(shí)沒想過這么處理,今天算是學(xué)到了。
    2、是一個(gè)好辦法。
    3、如果是上傳EXCEL的話,可以看成是對(duì)文件的添加操作,解析數(shù)據(jù)可以看成是對(duì)數(shù)據(jù)的添加操作,都是一樣的,文件也不過是數(shù)據(jù)存儲(chǔ)的一種方式,數(shù)據(jù)庫未出現(xiàn)之前,數(shù)據(jù)就是以文件的形式保存的,難道數(shù)據(jù)庫出現(xiàn)后,對(duì)文件的上傳而不保存到數(shù)據(jù)庫中就不能算是添加操作了?不要跟我說你只是讓他上傳,但上傳后是不保存在服務(wù)器或數(shù)據(jù)庫或其它的任何地方,而僅僅是能點(diǎn)上傳按鈕而已。
    而報(bào)表形成餅圖也是一種權(quán)限的話,可以把它設(shè)置成對(duì)餅圖的查看操作,對(duì)曲線圖的查看操作,導(dǎo)出到PDF,也不過就是對(duì)PDF的查看操作,不過,個(gè)人認(rèn)為,即然你都可以看到源數(shù)據(jù)了,餅圖,曲線圖卻不讓人看,還讓人家自己去畫不成?

    # re: web開發(fā)中的權(quán)限設(shè)計(jì)拙見一二(1)----設(shè)計(jì)思路  回復(fù)  更多評(píng)論   

    2007-01-03 16:53 by 江上一葉舟
    @errorfun
    1,呵呵,上傳文件僅僅是添加操作,我們只是獲得request流,解析流中數(shù)據(jù),并且添加入數(shù)據(jù)庫,如果您硬要認(rèn)為這個(gè)操作就是添加數(shù)據(jù),我覺得也不無道理,但客戶的需求是這樣的:高級(jí)系統(tǒng)管理員角色可以一次性用excel導(dǎo)入一大批數(shù)據(jù),普通的管理員不能進(jìn)行這樣的導(dǎo)入操作,只能逐條添加,于是乎,您認(rèn)為的這兩種“添加”操作在我們的系統(tǒng)中被看成是不同的兩種權(quán)限。

    2,您提到“即然你都可以看到源數(shù)據(jù)了,餅圖,曲線圖卻不讓人看,還讓人家自己去畫不成?”,您的這個(gè)想法無可厚非,但目前的需求是這樣的:普通管理員只能看到數(shù)據(jù),即查看源數(shù)據(jù),而領(lǐng)導(dǎo)要求只對(duì)他開放數(shù)據(jù)匯總成圖形的功能,也就是數(shù)據(jù)統(tǒng)計(jì)后的圖形查看功能,領(lǐng)導(dǎo)不關(guān)心源數(shù)據(jù),只關(guān)系數(shù)據(jù)的統(tǒng)計(jì)結(jié)果和比例

    3,我覺得您的理解固然沒錯(cuò),但不同的客戶的需求不同,您所說的內(nèi)容是針對(duì)需求的理解問題:)

    # re: web開發(fā)中的權(quán)限設(shè)計(jì)拙見一二(1)----設(shè)計(jì)思路  回復(fù)  更多評(píng)論   

    2007-01-03 17:30 by 壞男孩

    # re: web開發(fā)中的權(quán)限設(shè)計(jì)拙見一二(1)----設(shè)計(jì)思路  回復(fù)  更多評(píng)論   

    2007-01-03 19:37 by errorfun
    @江上一葉舟
    1、對(duì)于所說的情況確實(shí)是存在,如果是我,我會(huì)將領(lǐng)導(dǎo)的那種一次性導(dǎo)入看成是另一個(gè)資源操作,而權(quán)限是對(duì)這個(gè)資源操作的設(shè)置,對(duì)普通管理員,則沒有這個(gè)資源操作的權(quán)限,就像一個(gè)頁有增加,刪除,修改,查看,導(dǎo)入,上傳,下載的功能一樣,增刪改查,我會(huì)看成是一個(gè)ACTION中的操作,導(dǎo)入看成是另一個(gè)ACTION中的操作,上傳下載看成是第三個(gè)ACTION的操作。一個(gè)頁面分離成三個(gè)ACTION的權(quán)限設(shè)置,就是這樣而已,不是說硬要認(rèn)為。數(shù)據(jù)的讀取方法,過程,可以不必特別在意,抽象出來后都一樣。“獲得request流,解析流中數(shù)據(jù),并且添加入數(shù)據(jù)庫”不過就是獲得數(shù)據(jù),保存數(shù)據(jù)的過程,和頁面填寫數(shù)據(jù),然后提交保存入數(shù)據(jù)庫是相似的,不同的只是過程。

    2、我說的問題之前也說了它的權(quán)限設(shè)置可以看成是“對(duì)餅圖的查看操作,對(duì)曲線圖的查看操作,導(dǎo)出到PDF,也不過就是對(duì)PDF的查看操作”,所以對(duì)于領(lǐng)導(dǎo)的要求也是能完成的,普通管理員只有查看數(shù)據(jù)的權(quán)限,領(lǐng)導(dǎo)有查看餅圖的權(quán)限,查看曲線圖的權(quán)限。

    3、當(dāng)然我說的也并非是針對(duì)某一需求的理解,而是將頁面的操作進(jìn)行抽象后的理解所說的。呵呵

    權(quán)限有的是基于ACTION或URI,有的是基于資源的,可能你的是基于資源的,所以和我的想法并不是相同的。權(quán)限開得更清楚也不是沒有好處,至少在設(shè)置權(quán)限時(shí)用戶更加清楚它設(shè)置的權(quán)限對(duì)哪個(gè)操作有影響。
    就像我一開始說的,這是我第一個(gè)項(xiàng)目時(shí)所想的權(quán)限系統(tǒng),當(dāng)時(shí)所想的也是要簡(jiǎn)化復(fù)雜的權(quán)限系統(tǒng),而沒有關(guān)注到用戶設(shè)置權(quán)限時(shí)是否清楚的問題,時(shí)隔一年,現(xiàn)在的權(quán)限設(shè)已大不相同,操作的定義在于XML文件中,而非數(shù)據(jù)庫或用權(quán)值表示,操作可以有十個(gè)或一百個(gè),這都不影響,設(shè)置權(quán)限時(shí)讀取的是XML文件中的信息,它顯示用戶可以設(shè)置哪些操作,操作對(duì)應(yīng)的模塊等等的信息。而設(shè)置后的相應(yīng)信息同樣保存進(jìn)數(shù)據(jù)庫,在用戶登陸時(shí)再進(jìn)行加載。數(shù)據(jù)庫保存的就是XML文件中的模塊或操作的ID,權(quán)限具有繼承的能力,系統(tǒng)權(quán)限優(yōu)于模塊權(quán)限等等。這些都是根據(jù)市場(chǎng)和自己的理解變化而變化的。只是在看到你這篇文章后令我想起了自己設(shè)計(jì)的第一個(gè)權(quán)限系統(tǒng)而有感而發(fā)而已,不要見怪。

    # re: web開發(fā)中的權(quán)限設(shè)計(jì)拙見一二(1)----設(shè)計(jì)思路  回復(fù)  更多評(píng)論   

    2007-01-03 22:14 by 小賀
    好文章! 學(xué)習(xí)了!!

    # re: web開發(fā)中的權(quán)限設(shè)計(jì)拙見一二(1)----設(shè)計(jì)思路  回復(fù)  更多評(píng)論   

    2008-02-28 12:22 by black
    就是泛泛的說,又沒有一個(gè)簡(jiǎn)單的例子,理論

    # re: web開發(fā)中的權(quán)限設(shè)計(jì)拙見一二(1)----設(shè)計(jì)思路  回復(fù)  更多評(píng)論   

    2009-03-26 23:40 by interdrp
    權(quán)限->策略->用戶 實(shí)例 www.interdrp.com 下載分銷系統(tǒng)客戶端,用系統(tǒng)提示的默認(rèn)的帳套及用戶名進(jìn)入系統(tǒng)即可。
    有什么好的想法也可以在 http://www.cnblogs.com/interdrp/ 提出,謝謝

    # re: web開發(fā)中的權(quán)限設(shè)計(jì)拙見一二(1)----設(shè)計(jì)思路  回復(fù)  更多評(píng)論   

    2011-08-10 10:58 by 1h
    rtyrt

    # re: web開發(fā)中的權(quán)限設(shè)計(jì)拙見一二(1)----設(shè)計(jì)思路[未登錄]  回復(fù)  更多評(píng)論   

    2011-08-10 11:00 by lh
    哥們! 可以將代碼和數(shù)據(jù)放在我郵箱嗎。謝謝
    76162111@qq.com
    主站蜘蛛池模板: 国产亚洲精AA在线观看SEE| 亚洲一级特黄大片在线观看| 国产精品美女自在线观看免费| 免费国产真实迷j在线观看| 久久久久亚洲av成人无码电影| 亚洲成年人在线观看| 亚洲免费视频网址| 99亚洲精品卡2卡三卡4卡2卡| j8又粗又长又硬又爽免费视频| 免费黄色电影在线观看| AA免费观看的1000部电影| 免费**毛片在线播放直播| 国产精品亚洲成在人线| 激情亚洲一区国产精品| 成人免费夜片在线观看| 中文字幕免费视频一| 麻豆国产入口在线观看免费| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 国产成人A人亚洲精品无码| 亚洲国产高清在线精品一区| 香港一级毛片免费看| 毛片无码免费无码播放| 超pen个人视频国产免费观看| 亚洲精品无码久久久久| 亚洲一区精彩视频| 和老外3p爽粗大免费视频| 91情侣在线精品国产免费| 精品亚洲一区二区三区在线观看| 亚洲国产美女视频| 又粗又长又爽又长黄免费视频| 最近中文字幕无免费| 免费A级毛片无码久久版| 亚洲久本草在线中文字幕| 亚洲av日韩精品久久久久久a| 一级毛片免费毛片一级毛片免费| 日韩黄色免费观看| 亚洲欧洲日韩不卡| 色屁屁在线观看视频免费| 九九精品免费视频| 久久亚洲高清观看| 亚洲av永久无码精品秋霞电影秋 |