2012-06-18 14 views
0

我有一個網站,高度granulised訪問,因此需要很多web.config文件。問題是我想修剪菜單,以便只有某些用戶才能訪問某些文件夾。我在網站地圖中啓用了修剪和設置角色,但是當我訪問該頁面時,由於我有權查看不在子文件夾中的默認頁面,因此菜單未顯示。 當我鍵入我有權訪問的子文件夾中的頁面的URL。如何使用具有多個文件夾和多個web.config文件的網站實施安全修整?

我應該如何處理這個問題:

  1. 站點地圖爲每個web.config文件 - 不知道這將如何工作
  2. 刪除子web.config文件中只使用一個單一的一個

  3. 有沒有其他的建議。

感謝

回答

0

您不需要每個web.config文件的站點地圖。當通過菜單控件和SitemapDataSource使用站點地圖時,ASP.NET將通過您配置的MembershipProvider和/或RoleProvider確定您是否有權訪問站點地圖中指定的每個頁面,並且如果您有權訪問,則站點地圖條目將顯示在菜單。

請注意,如果您無法訪問站點地圖中所有項目的父項,則無法看到該項目。您可以使用StartingNodeUrl配置SitemapDataSource,以更改站點地圖中菜單的根位置。

至於爲什麼您在菜單中看不到默認頁面,如果您可以通過直接輸入URL訪問默認頁面,那麼問題很可能是您沒有正確設置Menu或SitemapDataSource 。對於與幫助,請參閱:http://msdn.microsoft.com/en-us/library/ms227441.aspxhttp://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.menu.aspx#binding_to_data

如果您需要更多的指導,我建議你儘量縮小問題的確切原因,因爲成員,角色,站點地圖和菜單是一個非常廣泛的話題,有是可能發生的大量缺陷。在沒有安全修整的情況下啓動並運行菜單,並在嘗試鏈接兩者之前驗證「成員資格」和「角色」是否正常工作。

+0

謝謝pseudocoder,問題是,在站點地圖中的第一個節點沒有一個URL,如果把它修改成:一個 surfer190

0

可以使用的MembershipUser,RoleManager類和regsql.exe工具生成您的安全數據庫。

或者用IPrincipal和IIdentity創建特定的安全庫。

0

回答我的問題找到的解決辦法在這裏: ASP Forus

非常出色地完成謝謝。

這是如此微不足道。

所有需要做的就是確保站點地圖中的頂層節點有一個url。

<?xml version="1.0" encoding="utf-8" ?> 
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > 
     <siteMapNode **url="~/"** title="Home" description=""> 
     <siteMapNode title="Home" url="~/Default.aspx"/> 
     <siteMapNode title="About" url="~/About/About.aspx" /> 
     <siteMapNode title="Lists" url="~/Lists/Lists.aspx" /> 
    </siteMapNode> 
    </siteMap> 

注意這一行:

相關問題