基于用户角色的SiteMap控件不起作用

时间:2010-04-19 06:35:59

标签: asp.net sitemap roles role-based

  <siteMapNode roles="*">

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

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

....

任何用户都可以看到Adv页面。这是一个麻烦和问题:为什么以及如何隐藏角色sitenodes。

但如果我HttpContext.Current.User.IsInRole("Administrator"),它会显示用户是否处于管理员角色。

网络配置:

<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>

2 个答案:

答案 0 :(得分:2)

启用安全修整 默认情况下不启用安全修整,并且无法以编程方式启用它;它只能在Web.config文件中设置

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

答案 1 :(得分:1)

您需要在web.config中使用location标记。

<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