程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET 2.0導航功能之配置會員和角色

ASP.NET 2.0導航功能之配置會員和角色

編輯:關於ASP.NET

一、簡介

在本文中,我們將探討ASP.NET 2.0的會員、角色和配置問題。ASP.NET中的會員系統提供了一個可編程API用於創建和管理用戶賬戶,而其中的角色部分使 開發者能夠定義一組角色並把用戶與角色相關聯。典型地,一個提供用戶賬戶的 網站都具有只為某些用戶、認證用戶或屬於特定角色的用戶所存取的內容部分。

例如,一個Web站點可能有一組頁面——它允許一個可信任用戶編輯該Web站 點的內容或管理已有用戶。不是簡單地試圖隱藏這個頁面並且希望沒有人偶然在 浏覽它時遇到麻煩,或硬編碼授權而僅僅允許單個用戶使用;一種更為強壯和安 全的方式是定義一個管理員角色——然後賦給他一組選出來的信任用戶。最後, 這些管理web頁面被進一步配置以允許僅那些具有管理員角色的用戶可以進行存 取操作。同樣,該Web站點可能包含一組只有認證用戶可以存取的頁面。

既然該站點的某些部分可能只能為某些用戶所存取,那麼,這就使得我們在 建立站點導航時有點進退兩難。我們是否要包括那些只有授權用戶才能在Web站 點的站點地圖中存取的頁面?如果我們這樣做了,那麼所有的用戶將會在該站點 的菜單或樹視圖中看到受限制的頁面。為什麼不能向存取它們的用戶顯示指向這 些頁面的鏈接呢?如果我們從站點地圖上刪除了這些受限制的頁面,那麼那些來 觀看這些頁面的授權用戶就無法容易地導航到它們,因為它們不是站點地圖的一 部分,並因此不會出現在該站點的樹視圖或菜單中!

值得慶幸的是,ASP.NET 2.0的站點導航提供了一種稱為安全性修剪的特性。 當用支持安全性修剪的功能獲得站點地圖信息時,只有那些當前登錄的用戶具有 訪問授權的站點地圖結點才是可用的。這意味著,站點的TreeView或Menu將僅包 含為當前登錄用戶可存取的那些部分。要想了解怎樣配置站點導航以支持安全性 修剪,請接著往下讀!

二、配置ASP.NET 2.0的會員和(可選)角色

既然站點導航安全性修剪把站點地圖數據基於訪問頁面的用戶和為站點地圖 中的頁面定義的授權設置,那麼在我們可以分析安全性修剪之前,你必須首先配 置你的Web站點以使用ASP.NET 2.0的會員服務功能。(你也可以配置該站點來使 用角色,並使用基於角色的授權優點,但是這對於展示安全性修剪概念並不作要 求。)至於詳細討論怎樣配置一站點以使用會員和角色已經超出了本文的范圍。

如果你不想在一個新的Web站點上花費時間來安裝會員和角色特性的話,你可 以使用它。具體地說,在本文後面可下載的Web站點中包含兩個角色——管理員 (Administrator)和測試員(Tester),並有四個用戶:

·Superman,其角色為管理員和測試者

·Admin,其角色為管理員

·Mr.Tester,其角色為測試者

·Average User,沒有任何角色

而且,我在該工程中有三個文件夾:Admin,Tester和AuthUsersOnly。前兩 個文件夾已經被配置僅允許具有管理員和測試者角色的用戶存取。 AuthUsersOnly文件夾被限制僅用於認證的用戶。

三、配置站點導航以使用安全性修剪

默認地,站點導航並不使用安全性修剪。不管什麼用戶正在訪問站點,並且 不管定義什麼樣的授權規則,當每個用戶通過一TreeView或菜單Web控件來觀看 站點地圖數據時,他都被可以看到站點地圖中的所有部分。通過啟動安全性修剪 ,站點導航系統將自動地基於當前登錄的用戶和為站點地圖中的 <siteMapNode>元素所參考的頁面的授權而限制顯示結果。

可以使用下列模式通過Web.config文件來配置站點導航設置:

<siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
<providers>
<add name="XmlSiteMapProvider"
description="Default SiteMap provider."
type="System.Web.XmlSiteMapProvider"
siteMapFile="siteMapFileName"
securityTrimmingEnabled="true" />
</providers>
</siteMap>

回想一下在本系列第一部分中的討論——站點導航系統使用了提供者模型。 這個模型提供給開發者一些良好定義的公共API,但是允許(如果需要的話)定 制內部實現細節。缺省地,站點導航特點使用XmlSiteMapProvider-它從XML格式 化的站點地圖文件Web.sitemap中獲得站點地圖信息。你可以通過Web.config文 件來改變所使用的提供者,或修改針對缺省提供者的缺省設置。

為了定制缺省提供者的設置,只要簡單地添加一新的提供者-它使用與缺省提 供者(System.Web.XmlSiteMapProvider)相同的類型來定制所需要的設置。上面 顯示的代碼片段展示了定制兩個XmlSiteMapProvider的設置:

·siteMapFile設置指定由提供者所使用的站點地圖文件的文件名;缺省地, 這個值是Web.sitemap。你如果喜歡,可以在此定制文件名。但是,我鼓勵你確 保站點地圖文件名以.sitemap擴展名結尾,因為缺省地這個擴展名被ASP.NET引 擎保護,從而阻止web訪問者觀看站點地圖文件。

·securityTrimmingEnabled設置顯示是否使用安全性修剪。為了使用安全性 修剪,可以把它設置為true,如上面所示。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved