【问题标题】:SiteMap control based on user roles doesn't works基于用户角色的站点地图控件不起作用
【发布时间】:2011-02-09 13:39:34
【问题描述】:
  <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>

【问题讨论】:

    标签: asp.net sitemap roles role-based


    【解决方案1】:

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

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

    【讨论】:

    • aha... 问题出在这里:
      站点地图数据源只请求一个元素
    【解决方案2】:

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

    【讨论】:

    • hm...看起来我无法将 System.Web 用于 WebApplication 的 App_Code。
    • 另外...我对每个角色都没有不同的文件夹。如果我做文件夹,一些文件夹必须能够用于某些角色(不是一个角色 - 一个文件夹)
    猜你喜欢
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 2015-10-08
    • 1970-01-01
    相关资源
    最近更新 更多