0
  <siteMapNode roles="*">

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

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

....

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

但如果我这样做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>
4

2 回答 2

2

启用安全修剪 安全修剪默认不启用,也无法通过编程方式启用;只能在 Web.config 文件中设置

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

于 2010-04-19T06:40:10.617 回答
1

您需要在 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

于 2010-04-22T05:54:04.197 回答