1. 程式人生 > >程序員的自我救贖---7.1:權限系統講解

程序員的自我救贖---7.1:權限系統講解

讓我 mvc .cn 之前 目的 member targe 系統應用 頁面

《前言》

(一) Winner2.0 框架基礎分析

(二)PLSQL報表系統

(三)SSO單點登錄

(四) 短信中心與消息中心

(五)錢包系統

(六)GPU支付中心

(七)權限系統

(八)監控系統

(九)會員中心

(十) APP版本控制系統

(十一)Winner前端框架與RPC接口規範講解

(十二)上層應用案例

(十三)總結

《權限系統講解》

在Winner2.0我們的權限系統是很老了,上次Jason看代碼發現權限系統還是2006開發的。這也讓我們萌生了對“權限系統”重構的念頭。

無奈呼工作一直很忙,沒有時間去重構它。並且重構更多時候是在操作界面上的重構,以及使用MVC翻抄一遍,最重要的是現在的權限系統還比較堅挺,沒出過什麽問題。

我們重點來說說權限系統的表設計,因為界面實在比較老,而且比較難看,如果我們重構之後我們再把他上到GitHub。

權限系統的表結構是非常簡單的,基本和所有市面上教科書的權限系統是一樣的,主要有五張表組成:

Trit_Role:角色表

Trit_RoleMember:角色成員表;

Trit_Function:功能表;

Trit_FunctionMember:功能成員表;

Trit_Right: 權限關聯表;

額外還有兩張系統表: Tnet_RegInfo(用戶表),Tsystem_App(項目表)

這麽說好像比較難理解,我們看一張圖就清楚了:

技術分享圖片

trit_role:角色表,該項目中有什麽角色比如:商城_商品上架員、商城_訂單管理員。 不同的角色能進入的界面是不同的。並且外鍵關聯項目表指定是哪個項目的權限;

trit_rolemember:角色成員表,為角色表的擴展表關聯trit_role、關聯用戶表(nodeid),制定哪個用戶擁有那個角色的身份;

trit_function:功能表,指定該項目中有什麽功能比如:商城_管理訂單,商城_查看銷售報表。關鍵關聯項目表,多項目情況下每個項目的功能不同;

trit_functionmember:功能成員表,為功能表的擴展表,制定某個功能具體能訪問的頁面路徑;

trit_right: 權限關聯表,關聯角色與功能;

我們看到的權限系統可能有的比較復雜,我記得之前我們一直講好的權限系統應該控制到按鈕,如果是在Asp.net WebForm 中是不太好處理的,但是在MVC中我們使用特性類去驗證一下

還是比較好處理的,但是相應的程序要去查詢一次“權限系統”自然體驗感要慢一點。

這裏關於是否要控制到按鈕Winner這套權限系統的表結構是足夠應對的,就看是否要支持到這一步了。我們現在開發項目中都沒有去控制到按鈕這個程度,總歸是接觸的項目不到這個層次。

最後我還貼一下,權限系統的界面圖吧,給大家看看2006年開發的權限系統界面長啥樣

技術分享圖片

什麽成員關聯,角色關聯,功能管理 就不貼了。著實難看,我自己都接受不了。不過這個互查的界面和功能還是要說一下,因為這個非常好用。

它可以更加提供的一個角色名稱查詢出這個 角色有什麽功能,然反向查出那些用戶有這些角色的身份。同理也可以正向查詢哪個用戶有哪些角色的身份。

好了,差不多了。在下一篇《權限系統實際應用》中我再細講一下,如何講權限系統應用到每個項目中去。

這裏就不貼源碼了,等項目重構了,我再上一份到GitHub。

有興趣一起探討Winner框架的可以加我們QQ群:261083244。或者掃描左側二維碼加群。

程序員的自我救贖---7.1:權限系統講解