2012-12-13 57 views
1

我有一些與我的Sitemap一起執行角色。讓我一步一步解釋它。登錄UserA具有RoleXYZ。在myFolder裏面,我有兩個資源:file1,file2。對於這部分我的web.config配置:在webconfig中配置角色asp.net和站點地圖

<location path="myFolder"> 
    <system.web> 
    <authorization> 
    <allow roles="RoleXYZ, RoleABC" /> 
    <deny users="*" /> 
    </authorization> 
</system.web> 
</location> 

我的網站地圖:

<siteMapNode title="$Resources:Web.sitemap, Home" url="~/Home.aspx">  
    <siteMapNode title="Process" roles="RoleXYZ, RoleABC"> 
     <siteMapNode title="Add Customers" url="~/myFolder/file1.aspx" roles="RoleXYZ"> </siteMapNode> 
     <siteMapNode title="Add Partners" url="~/myFolder/file2.aspx" roles="RoleABC"> </siteMapNode> 
    </siteMapNode> 
    <siteMapNode title="ContactUs" url="~/ContactUs.aspx"></siteMapNode> 
</siteMapNode> 

由於用戶A只有一個角色RoleXYZ,通常他是不是想看到的SiteMapNode(加入合作伙伴)。

任何想法,問題在哪裏?

回答

0

「角色」屬性只能用於擴大對某個siteMapNode的可見性,絕不能限制它。 MSDN文檔充其量是誤導性的。

另外,請記住您的配置不安全:角色RoleXYZ和RoleABC的用戶都可以通過在瀏覽器中鍵入他們的地址來訪問這兩個頁面。您應該限制訪問Web.config中的單個頁面,而不是嘗試使用「roles」屬性。

+0

如何限制訪問Web.config中的單個頁面以通過在瀏覽器中鍵入他們的地址來阻止訪問 –

+0

@Saadkhatri,這取決於您的用戶和角色。上面的Alex Bob的web.config將拒絕所有用戶('')的訪問,除了角色XYZ或ABC('') 。我希望這有幫助。否則,你能更具體嗎? – Yogster

+0

請告訴我,我應該在哪裏放置web.config文件..我做與我的角色相同的名稱或什麼新的文件夾.... –