2014-01-22 73 views
0

在一個網站項目(VS 2010)中,我確實有一個<asp:Menu>,它使用啓用了安全修整功能的System.Web.XmlSiteMapProvider在web.sitemap上提供。Web.siteMap中的絕對URL地址

一切正常。很顯然,用戶必須通過身份驗證才能看到下面示例中的子節點。但是這裏的問題是具有絕對URL的站點地圖節點不會顯示在菜單中。以下是web.sitemap的摘錄:

<siteMapNode url="~/Administration/default.aspx" title="Administration" roles="Administrator" > 
    <siteMapNode url="~/Administration/worksfine.aspx" title="Does show" /> 
    <siteMapNode url="http://pmspublic.in.ohchr.org" title="Does not show" /> 
</siteMapNode> 

任何想法如何實現這一點,而不需要進入菜單控件的DataBound事件? 謝謝

回答

0

所以啓用了安全修剪功能,並且帶有absoulte url的節點位於受限制的SiteMapNode內。由於外部URL沒有web.config來檢查當前用戶的權限,因此簡單地刪除了相應的站點地圖節點。

解決方案:向絕對url節點添加一個roles="*",因爲無論如何每個人都可以訪問節點,所以該節點的安全修整將被跳過。像這樣:

<siteMapNode url="~/Administration/default.aspx" title="Administration" roles="Administrator" > 
    <siteMapNode url="~/Administration/worksfine.aspx" title="Does show" /> 
    <siteMapNode url="http://pmspublic.in.ohchr.org" title="Does not show" roles="*" /> 
</siteMapNode>