溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

換位思考權(quán)限設(shè)計(jì)(把復(fù)雜的問題,簡單化才是水平,用簡單的道理解決復(fù)雜的問題)

發(fā)布時間:2020-06-27 10:40:22 來源:網(wǎng)絡(luò) 閱讀:287 作者:jirigala_bao 欄目:編程語言

我們寫程序老會想,人有什么權(quán)限,角色有什么權(quán)限等,然后設(shè)計(jì)哪幾個表等等,
其實(shí)很多時候我們會遇到,哪臺電腦可以訪問哪臺電腦,那臺電腦可以上網(wǎng)?哪
個人可以進(jìn)入那個房間等,哪個部門有什么權(quán)限。

所以,擁有權(quán)限的,不只是人,還可以是其他的實(shí)體,這些實(shí)體不知道什么時候
會遇上什么需求,你總不能遇上一個實(shí)際需要,加幾個表,把權(quán)限判斷函數(shù)又修
改一下吧?

所以我建議權(quán)限的存儲結(jié)果是就一個表就可以了,其中有很多視圖,例如人的權(quán)
限是一個視圖,角色的權(quán)限是一個視圖,電腦的權(quán)限是一個視圖,遇到一個新的
需求,就建立一個視圖就可以了。這樣你寫的權(quán)限判斷函數(shù)就不用修改了,也能
滿足任何需要,表也不用沒完沒了的增加。

說白了,不就是,啥玩意對啥有啥權(quán)限嘛?所以我的權(quán)限設(shè)計(jì)的物理存儲結(jié)構(gòu)為:
 

換位思考權(quán)限設(shè)計(jì)(把復(fù)雜的問題,簡單化才是水平,用簡單的道理解決復(fù)雜的問題)

 

Base_UserPermission 視圖的定義為 SELECT * FROM Base_ResourcePermission WHERE ResourceCategory = 'User'
   ResourceID 為 UserID.

Base_RolePermission 視圖的定義為 SELECT * FROM Base_ResourcePermission WHERE ResourceCategory = 'Role'
   ResourceID 為 RoleID.

Base_ModulePermission  視圖的定義為 SELECT * FROM Base_ResourcePermission WHERE ResourceCategory = 'Module'
   ResourceID 為 ModuleID.

就是 1(表) + N (視圖),什么資源有什么權(quán)限,所以寫一次程序,再也不用
修改了,遇到什么新需求,也是增加了一個視圖而已,物理表結(jié)構(gòu)就不用增加了。

當(dāng)然你系統(tǒng)的權(quán)限是固定的,我也建議你這么設(shè)計(jì),早晚會遇到各種各樣的稀奇
古怪的需求,留下擴(kuò)展的空間和余地,你覺得看著不順眼,就把視圖建立好,也
相當(dāng)于真實(shí)的一個表,差距不是很大。

雖然說說簡單,這也是搞了N年,N個系統(tǒng),折騰了N次,反復(fù)修改了N回權(quán)限模塊
后,才總結(jié)出來的經(jīng)驗(yàn),我這么說,你可能會笑我,真的總結(jié)出來很不容易的,
我畢竟不是天才,我是普通老百姓,也沒人教我指導(dǎo)一下。

本來我想在公司里推一推這個權(quán)限設(shè)計(jì)的思想,還沒等我講,大家先得出了一個
結(jié)論,天下不可能有通用的權(quán)限設(shè)計(jì),那我問問,為什么會有通用的數(shù)據(jù)庫,為
什么還會有通用的操作系統(tǒng)?權(quán)限其實(shí)也不是非常的難,完全可以通用的,有啥
呀,不就那么點(diǎn)兒東西嘛。

我也多聽聽大家的,我們很容易變成老頑固,聽不進(jìn)別人的意見,我已經(jīng)努力了
幾年了,經(jīng)常提醒自己,千萬別變成老頑固,那真的落后了。

我這個設(shè)計(jì)被無數(shù)人冷嘲熱諷后,2008年的一天,我在南京好朋友哪里進(jìn)行技術(shù)
交流時,我無意間發(fā)現(xiàn),這個權(quán)限設(shè)計(jì)的思想,就是Oracle的權(quán)限設(shè)計(jì)思想,幾乎
是一模一樣的,我很自豪,因?yàn)槲耶?dāng)時這么搞的時候,不是先去抄襲Oracle的權(quán)限。

我不知道做管理軟件的,是不是會覺得Oracle的權(quán)限設(shè)計(jì)是好的還是不好的?我想
在國內(nèi)的普通設(shè)計(jì)人員還沒有資格說,Oracle的權(quán)限設(shè)計(jì)怎么怎么不好吧?

為什么老外在N年前就能接受這個思想,而且就一直這么用,我們在自己的公司,自
己身邊的人推這個思想,都很難很難,遇到各種刁難,阻攔。要么沒有一個通用的,
要么就不符合數(shù)據(jù)庫主外鍵約束,要么不符合設(shè)計(jì)原理什么的,后來我也懶得跟大家
爭來爭去的,不用拉倒吧,是你們提高,又不是我提高,對我有啥好處。我自己搞
自己的算了。

 

補(bǔ)充說明一下,以上文章只是我的整體解決方案中的很小一部分,只是一個比較
基礎(chǔ)的,大家很容易理解的部分,還有一系列針對各種問題是,到底是如何解決的,我目前還沒遇到我不能解決的,當(dāng)然
前提是不修改權(quán)限框架,不修改權(quán)限函數(shù),目前我身邊遇到的問題,我還不能解決的,沒遇到。

整體哪個問題都怎么解決,涉及到我的利益,我不會全部公開出來,畢竟我花費(fèi)
了很多年的心血,同時也是燒了很多錢,同時整體的解決方法,也是我們公司的財富,大家都會把殺手锏都公布出來嘛?

數(shù)據(jù)權(quán)限,你徹底相通了,也像玩一樣,復(fù)雜的問題復(fù)雜解決了不是水平,用簡單的道理能把復(fù)雜的問題看得特別透徹,
才是真正的解決問題的本質(zhì),數(shù)據(jù)權(quán)限到底如何解決,也有一攬子解決方法和解決思路,給你講了,你就懂了,不給你講
你可能要摸索很多年才會悟透,平時開發(fā)軟件遇到的什么問題,應(yīng)該怎么解決,也是一整套的方法,這也是為什么有些東
西公開了也無所謂,以為這些簡單的,大家想想了也明白了,不難,難的問題,能解決了那就是成套的解決方案,是我賺
錢的看家本領(lǐng),誰會愿意把自己的真功夫教給大家?微軟會把自己的操作系統(tǒng)代碼都告訴我們嘛,也歡迎大家洽談深入的
合作,這么多年,我就研究了這個,用最簡單的方法,解決你最難的問題,所以我說話底氣才這么足的原因。我別的不行,
就這個行。天天就研究這問題了。

 

收費(fèi)標(biāo)準(zhǔn)是,1天2000元實(shí)施顧問費(fèi),一般有2天就解決好了,都講清楚了
(注:解答你提出95%以上的權(quán)限相關(guān)問題,回答不了你50%的問題,免費(fèi)咨詢,只能回答你10%的問題,我給你2000元一天的誤工費(fèi))。 
需要管理工具,1萬元一套, 需要整套的源代碼,架構(gòu)思想,那要另外算錢了。
 

聯(lián)系方式: QQ:252056973
MSN: JiRiGaLa_Bao@Hotmail.com
聯(lián)系人:吉日嘎拉
聯(lián)系電話:0571-8890 3169

 

 

將權(quán)限管理、工作流管理做到我能力的極致,一個人只能做好那么很少的幾件事情。

 

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI