2010-04-19 52 views
0
<siteMapNode roles="*"> 

    <siteMapNode url="~/Default.aspx" title=" Main" description="Main" roles="*"/> 

    <siteMapNode url="~/Items.aspx" title=" Adv" description="Adv" roles="Administrator"/> 

.... 

任何用戶都可以看到高級頁面。這是一個麻煩和問題:爲什麼以及如何隱藏角色sitenodes。基於用戶角色的SiteMap控件不起作用

但如果我做HttpContext.Current.User.IsInRole("Administrator")它顯示我是否在管理員角色中的用戶。

web配置:

<authentication mode="Forms"/> 
<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20"> 
    <providers> 
    <add connectionStringName="FlowWebSQL" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" passwordFormat="Hashed" applicationName="/" name="SqlProvider" type="System.Web.Security.SqlMembershipProvider"/> 
    </providers> 
</membership> 
<roleManager enabled="true" defaultProvider="SqlProvider"> 
    <providers> 
    <add connectionStringName="FlowWebSQL" name="SqlProvider" type="System.Web.Security.SqlRoleProvider" /> 
    </providers> 
</roleManager> 

回答

1

您需要使用location標記在web.config中。

<location path ="Items.aspx" > 

    <system.web> 

    <authorization> 

     <allow roles ="Administrator"/> 
     <deny users="*"/> 
    </authorization> 

    </system.web> 

</location> 

見下面一步一步的自定義角色執行
http://urenjoy.blogspot.com/2010/03/custom-role-provider-sitemap-navigation.html

+0

hm ...看起來我無法將System.Web應用到WebApplication的App_Code中 – Cynede 2010-04-22 06:04:01

+0

也...我沒有針對每個角色的不同文件夾 如果我做一些文件夾mu文件夾ST能夠爲一些角色(不是一個角色 - 一個文件夾) – Cynede 2010-04-22 06:06:49

+0

但是... web.config的代碼真的幫助!謝謝。 – Cynede 2010-04-22 06:09:30

2

啓用安全修整 安全修整默認情況下未啓用,它不能被編程爲使能;它只能在Web.config文件中設置

http://msdn.microsoft.com/en-us/library/ms178428.aspx

+0

啊哈......問題是在這裏: 一個 一個 Cynede 2010-04-19 07:07:39

+0

網站地圖數據源請求只有一個元素 – Cynede 2010-04-19 07:10:50