讓別人少走點彎路.
常用鏈接留言簿(2)我參與的團隊隨筆分類隨筆檔案文章分類文章檔案搜索最新評論
閱讀排行榜評論排行榜 |
2010年12月2日 # 讓別人少走點彎路. 2010年10月26日 #
摘要: C宏定義的簡單總結(jié)
今天在網(wǎng)上突然發(fā)現(xiàn)了下面幾個關(guān)于c代碼中的宏定義的說明,回想下,好像在系統(tǒng)的代碼中也見過這些零散的定義,但沒有注意,看到別人總結(jié)了下,發(fā)現(xiàn)果然很有用,雖然不知有的道可用與否,但也不失為一種手段,所以就先把它摘抄下來,增加一點見識:1,防止一個頭文件被重復(fù)包含 #ifndef BODYDEF_H #define BODYDEF_H //頭文件內(nèi)容 #endif ... 閱讀全文
2010年8月27日 #
摘要: 在前兩篇文章中,不少朋友對我的設(shè)計提出了異議,認為過于復(fù)雜,當(dāng)然在實際的各種系統(tǒng)的權(quán)限管理模塊中,并不像這里設(shè)計得那么復(fù)雜,我以前所做的系統(tǒng)中,由只有用戶和權(quán)限的,有只有用戶、權(quán)限和角色的,還有一個系統(tǒng)用到了用戶、權(quán)限、角色、組概念,這個系統(tǒng)是我在思考以前所做系統(tǒng)的權(quán)限管理部分中找到的一些共性而想到的一個設(shè)計方案,當(dāng)然還會有不少設(shè)計不到位的地方,在設(shè)計開發(fā)過程中會慢慢改進... 閱讀全文
摘要: 國慶前整的通用權(quán)限設(shè)計的數(shù)據(jù)庫初步設(shè)計部分,現(xiàn)在貼上來。
理清了對象關(guān)系之后,讓我們接著來進行數(shù)據(jù)庫的設(shè)計。在數(shù)據(jù)庫建模時,對于N對N的關(guān)系,一般需要加入一個關(guān)聯(lián)表來表示關(guān)聯(lián)的兩者的關(guān)系。初步估計一下,本系統(tǒng)至少需要十張表,分別為:權(quán)限表、用戶表、角色表、組表、用戶權(quán)限關(guān)聯(lián)表、用戶角色關(guān)聯(lián)表、角色權(quán)限關(guān)聯(lián)表、組權(quán)限關(guān)聯(lián)表、組角色關(guān)聯(lián)表、用戶屬組關(guān)聯(lián)表。當(dāng)然還可能引出一些相關(guān)的表。下面讓我們在Po... 閱讀全文
一.引言
因為做過的一些系統(tǒng)的權(quán)限管理的功能雖然在逐步完善,但總有些不盡人意的地方,總想抽個時間來更好的思考一下權(quán)限系統(tǒng)的設(shè)計。 權(quán)限系統(tǒng)一直以來是我們應(yīng)用系統(tǒng)不可缺少的一個部分,若每個應(yīng)用系統(tǒng)都重新對系統(tǒng)的權(quán)限進行設(shè)計,以滿足不同系統(tǒng)用戶的需求,將會浪費我們不少寶貴時間,所以花時間來設(shè)計一個相對通用的權(quán)限系統(tǒng)是很有意義的。 二.設(shè)計目標(biāo) 設(shè)計一個靈活、通用、方便的權(quán)限管理系統(tǒng)。 在這個系統(tǒng)中,我們需要對系統(tǒng)的所有資源進行權(quán)限控制,那么系統(tǒng)中的資源包括哪些呢?我們可以把這些資源簡單概括為靜態(tài)資源(功能操作、數(shù)據(jù)列)和動態(tài)資源(數(shù)據(jù)),也分別稱為對象資源和數(shù)據(jù)資源,后者是我們在系統(tǒng)設(shè)計與實現(xiàn)中的叫法。 系統(tǒng)的目標(biāo)就是對應(yīng)用系統(tǒng)的所有對象資源和數(shù)據(jù)資源進行權(quán)限控制,比如應(yīng)用系統(tǒng)的功能菜單、各個界面的按鈕、數(shù)據(jù)顯示的列以及各種行級數(shù)據(jù)進行權(quán)限的操控。 三.相關(guān)對象及其關(guān)系 大概理清了一下權(quán)限系統(tǒng)的相關(guān)概念,如下所示: 1. 權(quán)限 系統(tǒng)的所有權(quán)限信息。權(quán)限具有上下級關(guān)系,是一個樹狀的結(jié)構(gòu)。下面來看一個例子 系統(tǒng)管理 用戶管理 查看用戶 新增用戶 修改用戶 刪除用戶 對于上面的每個權(quán)限,又存在兩種情況,一個是只是可訪問,另一種是可授權(quán),例如對于“查看用戶”這個權(quán)限,如果用戶只被授予“可訪問”,那么他就不能將他所具有的這個權(quán)限分配給其他人。 2. 用戶 應(yīng)用系統(tǒng)的具體操作者,用戶可以自己擁有權(quán)限信息,可以歸屬于0~n個角色,可屬于0~n個組。他的權(quán)限集是自身具有的權(quán)限、所屬的各角色具有的權(quán)限、所屬的各組具有的權(quán)限的合集。它與權(quán)限、角色、組之間的關(guān)系都是n對n的關(guān)系。 3. 角色 為了對許多擁有相似權(quán)限的用戶進行分類管理,定義了角色的概念,例如系統(tǒng)管理員、管理員、用戶、訪客等角色。角色具有上下級關(guān)系,可以形成樹狀視圖,父級角色的權(quán)限是自身及它的所有子角色的權(quán)限的綜合。父級角色的用戶、父級角色的組同理可推。 4. 組 為了更好地管理用戶,對用戶進行分組歸類,簡稱為用戶分組。組也具有上下級關(guān)系,可以形成樹狀視圖。在實際情況中,我們知道,組也可以具有自己的角色信息、權(quán)限信息。這讓我想到我們的QQ用戶群,一個群可以有多個用戶,一個用戶也可以加入多個群。每個群具有自己的權(quán)限信息。例如查看群共享。QQ群也可以具有自己的角色信息,例如普通群、高級群等。 針對上面提出的四種類型的對象,讓我們通過圖來看看他們之間的關(guān)系。![]() 有上圖中可以看出,這四者的關(guān)系很復(fù)雜,而實際的情況比這個圖還要復(fù)雜,權(quán)限、角色、組都具有上下級關(guān)系,權(quán)限管理是應(yīng)用系統(tǒng)中比較棘手的問題,要設(shè)計一個通用的權(quán)限管理系統(tǒng),工作量也著實不小。 當(dāng)然對于有些項目,權(quán)限問題并不是那么復(fù)雜。有的只需要牽涉到權(quán)限和用戶兩種類型的對象,只需要給用戶分配權(quán)限即可。 在另一些情況中,引入了角色對象,例如基于角色的權(quán)限系統(tǒng), 只需要給角色分配權(quán)限,用戶都隸屬于角色,不需要單獨為用戶分配角色信息。 在下一篇中,我們將講述權(quán)限管理的數(shù)據(jù)庫設(shè)計等內(nèi)容。 |