首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 2.0 站點導航安全性修剪:會員角色授權與 SiteMap 節點可見性控制

     編輯:關於ASP.NET

ASP.NET 2.0 站點導航架構內建「安全性修剪」功能,依據目前登入使用者的身分與授權規則,自動過濾 SiteMapPath、TreeView、Menu 中無權存取的節點,實現導航介面與權限控制的無縫整合。

前置需求:設定會員與角色

  • 啟用 ASP.NET 2.0 會員服務(<membership>),建立使用者帳號。
  • (選用)啟用角色管理(<roleManager>),定義角色(如 Administrators、Testers)並指派使用者。
  • 在 web.config <authorization> 區段設定資料夾/頁面存取規則。

範例角色與使用者設定

使用者角色
SupermanAdministrators, Testers
AdminAdministrators
Mr.TesterTesters
Average User(無角色)

資料夾授權:Admin 僅 Administrators、Tester 僅 Testers、AuthUsersOnly 所有已驗證使用者。

啟用安全性修剪設定

在 web.config 站點地圖提供者設定 securityTrimmingEnabled="true":

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

SiteMapNode roles 屬性與授權整合

節點可宣告 roles 屬性(逗號分隔),導航系統會交叉比對:

  1. 使用者是否通過驗證。
  2. 使用者是否具備節點 roles 指定的角色(若有設定)。
  3. 目標 URL 是否符合 <authorization> 規則允許存取。

三者條件皆滿足,節點才顯示;否則自動隱藏(包含其子節點)。

SiteMapNode 範例

<siteMapNode url="~/Admin/Default.aspx" title="Administration" description="Admin Area" roles="Administrators">
  <siteMapNode url="~/Admin/Users.aspx" title="User Management" roles="Administrators" />
  <siteMapNode url="~/Admin/Settings.aspx" title="Site Settings" roles="Administrators" />
</siteMapNode>
<siteMapNode url="~/Tester/Default.aspx" title="Testing" roles="Testers" />
<siteMapNode url="~/Members/Profile.aspx" title="My Profile" />  <-- 僅需驗證,無 roles 限制

運作流程圖解

  1. 使用者請求頁面。
  2. 導航控制項繫結 SiteMapDataSource。
  3. XmlSiteMapProvider 載入站點地圖,建立節點樹。
  4. 啟用安全性修剪 → 遞迴檢查每節點 IsAccessibleToUser(HttpContext)。
  5. 不可存取節點從繫結集合移除,導航控制項僅呈現可見節點。

進階:自訂 SiteMapProvider 實作動態權限

繼承 StaticSiteMapProvider 覆寫 IsAccessibleToUser,整合自訂權限引擎(如 ACL、資源型權限、多租戶隔離),突破靜態 roles 與 web.config 授權限制。

最佳實務

  • 站點地圖檔案命名 .sitemap 受 ASP.NET 保護防直接下載。
  • 結合 SiteMapResolve 事件動態調整節點 URL/標題(如帶入使用者 ID)。
  • 大型網站採多提供者策略,區域獨立管理站點地圖。
  • 定期審核節點 roles 與 authorization 規則一致性。

安全性修剪讓導航介面成為權限控制的自然延伸,使用者只看見能去的地方,資訊安全與使用體驗雙贏。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved