欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
對權限系統設計的再思考
什么是權限系統,權限系統究竟在整個(gè)系統中起到什么作用,或者說(shuō)權限系統必須提供哪些功能?
談?wù)剛€(gè)人的看法,我認為授權和驗證是一個(gè)權限系統最基本的功能,而一個(gè)更完善的權限系統會(huì )增加上如何驗證和驗證后如何處理這兩種功能。
對于一個(gè)權限系統的基本元素,我覺(jué)得只有兩個(gè):Principal(權限主體),權限。用戶(hù),用戶(hù)組,角色等都可以抽象為權限主體這個(gè)概念;而權限則是資源+操作的抽象。權限可分為兩種,一種純粹就是資源,沒(méi)有操作,也可以認為是默認操作;另外一種就是帶操作的資源。授權本身沒(méi)有什么說(shuō)的,賦予權限主體權限;驗證簡(jiǎn)單的說(shuō)就是傳入權限主體和當前操作需要的權限,然后驗證返回說(shuō)可以操作或是不可以操作yes/no。同時(shí)要注意的是驗證的時(shí)候需要一個(gè)類(lèi)(接口)來(lái)返回用戶(hù)當前所擁有的權限,然后與當前操作需要的權限進(jìn)行比對,最后返回比對結果。
以acegi為例,下面分開(kāi)來(lái)說(shuō)明:
首先,acegi是沒(méi)有授權功能的,它簡(jiǎn)單把權限主體與資源配置在了xml里,當然這也帶來(lái)了可擴展性,可以看一個(gè)配置:
                /index.jsp=ROLE_ANONYMOUS,ROLE_USER
                /hello.htm=ROLE_ANONYMOUS,ROLE_USER
                /logoff.jsp=ROLE_ANONYMOUS,ROLE_USER
                /switchuser.jsp=ROLE_SUPERVISOR
                /j_acegi_switch_user=ROLE_SUPERVISOR
                /acegilogin.jsp*=ROLE_ANONYMOUS,ROLE_USER
                /**=ROLE_USER

/index.jsp,/hello.htm這些URL都是資源,因為它默認的操作就是訪(fǎng)問(wèn),所以訪(fǎng)問(wèn)特定URL就成了一個(gè)權限,ROLE_ANONYMOUS,ROLE_USER無(wú)疑就是權限主體。
Acegi對方法訪(fǎng)問(wèn)權限的配置也是和上面一樣的。
然后,看看acegi的驗證,其實(shí)它的驗證就是一個(gè)個(gè)的Voter,當你訪(fǎng)問(wèn)一個(gè)方法時(shí),由它獲得當前用戶(hù)和需要的權限(就是該方法),然后返回yes/no。
OK,這就是一個(gè)完整的權限系統了。當然acegi如果僅僅提供上面兩個(gè)基本功能,它是不會(huì )向現在這樣成功的,它最大的亮點(diǎn)就是提供了如何驗證和驗證后如何處理這兩種功能。對url它提供了filter,方法也一樣提供了Interceptor,這就是如何驗證,和我們在action里驗證沒(méi)有任何區別,只是換了一種方式而已。然后它驗證后的處理方式:yes就繼續往下執行,no就拋出異常最后再處理這個(gè)異常。我們在執行每個(gè)action前同樣也可以做到這一點(diǎn)。
這里著(zhù)重要提到的是數據權限。比如說(shuō)A只能對部門(mén)A下的數據有查看權限,B可以對部門(mén)A的數據有修改權限和對部門(mén)B的數據的查看權限。
看起來(lái)這個(gè)需求是比較麻煩的,但是我們可以按上面說(shuō)的拆分以下:
資源1:部門(mén)A下的數據  ;資源2:部門(mén)B下的數據
操作1:查看;    操作2:修改
產(chǎn)生四種權限:
權限1:資源1+操作1 ;權限2:資源1+操作2;權限3:資源2+操作1;權限4:資源2+操作2
權限主體A擁有權限:1 ; 權限主體B擁有權限:2,3
這樣就非常清晰了。
總結:我始終認為擁有授權和驗證功能就完成了一個(gè)完整的權限系統。至于如何去校驗權限,不管你是filter還是aop那是具體實(shí)現時(shí)的細節,采取的不同策略。而驗證后的處理則是和不同策略相對應的。在你考慮設計一個(gè)權限系統時(shí)首先考慮的是如何實(shí)現授權和驗證,而不是一開(kāi)始就考慮我是采取filter,還是aop,還是動(dòng)態(tài)改變sql。
謝謝wolfsquare,它的blog相關(guān)
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
RBAC模型(1)
理解基于A(yíng)cegi的權限控制系統(圖)
Spring框架和Acegi安全框架介紹
基于Struts的權限實(shí)現
2.6.3 Acegi 擴展
spring security 3.1配置過(guò)程從簡(jiǎn)單到復雜詳細配置
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久