[TreeView] 結合 Web.sitemap 與組態存取規則的權限設定

當你從 ASP.NET 組態中設定了各資料夾的權限之後,你套用了 Web.sitemap 的 TreeView 和 SiteMapPath 等工具就應該可以反映這套設定。換句話說,如果使用者未以適當的權限登入系統,他將無法看到被限制的資料夾下的所有程式...

當你從 ASP.NET 組態中設定了各資料夾的權限之後,你套用了 Web.sitemap 的 TreeView 和 SiteMapPath 等工具就應該可以反映這套設定。換句話說,如果使用者未以適當的權限登入系統,他將無法看到被限制的資料夾下的所有程式。

不過在那之前,你必須先在最上層的 Web.config 中加入如下的設定:

<system.web>
    <siteMap defaultProvider="default">
        <providers>
            <clear/>
            <add name="default" type="System.Web.XmlSiteMapProvider" siteMapFile="web.sitemap" 
               securityTrimmingEnabled="true" />
        </providers>
    </siteMap> 
</system.web>

如果你沒有加上上述的設定,將會看不到任何效果。

你也可以採用另一種更簡單的做法, 那就是直接在 SiteMap 裡面指定 roles 屬性:

<siteMapNode url="~/abc/def.aspx" title="abcdef">
   <siteMapNode url="~/ghi/jkl" title="ghijkl" roles="Sales" />
   ...
</siteMapNode>

不過如果你只加上 web.sitemap 的 roles 設定而沒有設定個別子資料夾中的權限, 那麼你只能限制 TreeView 之類控制項的顯示, 使用者還是有辦法自己打上網址或從其它連結進入那個子資料夾裡面的網頁。


Dev 2Share @ 點部落