張 佳
(黃山學(xué)院 現(xiàn)代教育技術(shù)中心,安徽 黃山 245041)
新聞發(fā)布類網(wǎng)站一般都設(shè)有新聞的分類,每條新聞發(fā)布或編輯時,都會歸屬某個分類。使用asp.net設(shè)計該類網(wǎng)站時,新聞發(fā)布/編輯頁(.aspx)存放于解決方案資源管理器的文件夾中,用戶是否能對該頁面進(jìn)行操作取決于用戶所擁有的角色是否對該文件夾有訪問權(quán)限。一旦角色有訪問某文件夾的權(quán)限,那么該用戶便擁有了訪問該文件夾中頁面的所有操作權(quán)限,能對新聞的發(fā)布和編輯選擇所有的欄目,無疑權(quán)限過大。一般某個用戶只能操作一個或幾個欄目,而不是對所有的欄目都有操作權(quán)限。
用ASP.NET開發(fā)一個新聞發(fā)布類網(wǎng)站,設(shè)計數(shù)據(jù)表如圖1[1]。
圖1 欄目表與新聞表之間一對多的關(guān)系
欄目表的記錄如表1。
表1 欄目表的具體記錄
欄目表與新聞表是一對多的關(guān)系,一個欄目有一條或多條新聞;一條新聞只屬于一個欄目。
在解決方案資源管理器中建立文件夾newsEdit,在該文件夾中建立Web窗體newsIn.aspx。如圖2。
圖2 新聞編輯文件夾和aspx頁面
該頁能加入或編輯具體的新聞,加入或編輯的新聞能選擇所有的欄目。
對該網(wǎng)站啟用并建立角色newsRo,設(shè)置該角色擁有對newsEdit文件夾的操作權(quán)限,具體設(shè)置如圖3(news是網(wǎng)站存放文件夾,一般位于磁盤根目錄下)。
圖3 建立角色并對文件夾設(shè)置訪問權(quán)限
建立用戶userEdit如圖4,并使該用戶具有newsRo角色。
圖4 設(shè)置用戶的角色
這樣,用戶userEdit具有newsRo角色,而newsRo角色具有操作文件夾newsEdit及其頁面newsIn.aspx的操作權(quán)限。于是用戶userEdit能操作newsIn.aspx頁,該用戶加入或編輯的新聞能選擇所有的欄目名,如圖5。
圖5 未細(xì)化用戶對新聞欄目操作權(quán)限的邏輯圖
在newsIn.aspx頁面中加入或編輯新聞時,用戶userEdit能操作所有欄目,導(dǎo)致操作權(quán)限過大,這在新聞類網(wǎng)頁中是不合理的。合理的做法是,某個用戶只能操作指定的一個或多個欄目,而不是操作所有的欄目。
建立若干個“用戶組”,存放于“用戶組”表中。一個用戶組包含一個或多個欄目,一個欄目可以屬于一個或多個用戶組。所有用戶組包含的欄目應(yīng)包括該新聞網(wǎng)站所有欄目。然后將用戶分配給用戶組:一個用戶只屬于一個用戶組,一個用戶組可以有一個或多個用戶。于是,用戶便擁有它所在用戶組所具有欄目的操作權(quán)限,而對該用戶組不包含的欄目無權(quán)操作。這樣便解決了用戶對頁面操作權(quán)限過大的問題,邏輯關(guān)系如圖6。
圖6 細(xì)化用戶對新聞欄目操作權(quán)限的邏輯圖
由上述可知,“用戶組”與“欄目”之間是多對多的關(guān)系,在關(guān)系型數(shù)據(jù)庫設(shè)計中,需要將它們分解為兩個一對多的關(guān)系??山⒁粋€“欄目組”表,欄目表與欄目組表之間是一對多的關(guān)系;同樣,用戶組表與欄目組表之間也是一對多的關(guān)系。
綜上所述,該新聞發(fā)布網(wǎng)站數(shù)據(jù)表之間有如圖7所示關(guān)系。
圖7 新聞類網(wǎng)站各表之間的關(guān)系
其中,aspnet_Users表是在建立角色和用戶的時候系統(tǒng)自動建立的。
該存儲過程(按用戶名選擇欄目)用在當(dāng)用戶加入或編輯新聞時,用戶只能選擇該用戶所在用戶組中所包含的欄目。
權(quán)限設(shè)置界面如圖8。
圖8 用戶權(quán)限細(xì)化操作界面
首先,后臺管理員選擇某個用戶組后,界面刷新并顯示所選擇的用戶組當(dāng)前擁有的欄目名(程序運行最開始可能沒有任何欄目);然后勾選或取消勾選具體的欄目名,即給所選的用戶組分配具體的欄目名;最后單擊“將欄目操作權(quán)分配給用戶組”按鈕,即將選中的欄目名分配給了所選擇的用戶組。
同樣,將用戶分配給用戶組也是先選擇具體的用戶組名,再分配具體的用戶名,最后單擊“將用戶加入到用戶組中”按鈕即可。
通過建立用戶組,細(xì)化了用戶的操作權(quán)限,這也是新聞類網(wǎng)站應(yīng)有的合理的設(shè)計。但一個用戶不能歸于多個用戶組中,否則就違背了設(shè)計的初衷;若想讓用戶擁有兩個及以上用戶組中欄目的操作權(quán),可再建立一個用戶組,將需要的欄目劃入該用戶組中,再將用戶歸為該用戶組即可。此外,若一個欄目只歸屬于一個用戶組,則該欄目只能由該組中的用戶操作;若一個欄目歸屬于兩個及以上用戶組,則該欄目下的新聞可由不同用戶組中的用戶操作。這樣一方面限制了用戶的權(quán)限,又不失操作的靈活性。
[1]蘇嘯,廖德偉.網(wǎng)站設(shè)計與制作[M].北京:中國鐵道出版社,2011.