【问题标题】:ASP.NET security trimming problem no fine grained control possible?ASP.NET 安全修整问题不可能进行细粒度控制?
【发布时间】:2009-07-29 09:45:30
【问题描述】:

我有这个站点地图:

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">
  <siteMapNode>
    <siteMapNode url="www.google.com" title="Google" roles="*" />
    <siteMapNode url="www.zdnet.com" title="Zdnet" roles="NonExistingRole" />
    <siteMapNode url="www.microsoft.com" title="Microsoft" roles="*" />
    <siteMapNode url="www.bing.com" title="Bing" roles="*" />
  </siteMapNode>
</siteMap>

我正在使用这样配置的自定义角色提供程序(每当我调用例如 GetRolesForUser 方法时,这都有效):

    <authentication mode="Windows"/>
<roleManager enabled="true" defaultProvider="MyProvider">
    <providers>
        <clear/>
        <add name="MyProvider" type="CustomProviders.MyTestRoleProvider, CustomProviders, Version=1.0.0.0, Culture=neutral"/>
    </providers>
</roleManager>

<siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
  <providers>
    <clear/>
    <add name="XmlSiteMapProvider" type="System.Web.XmlSiteMapProvider" siteMapFile="Web.sitemap" securityTrimmingEnabled="true"/>
  </providers>
</siteMap>

我期望角色="NonExistingRoles" 的节点不会被可视化,但它会。如何解决这个问题?

我也需要开启吗?

【问题讨论】:

    标签: asp.net configuration roleprovider web.sitemap


    【解决方案1】:

    显然是因为根 siteMapNode 还需要将角色属性设置为 *,如下所示:

    <siteMapNode roles="*">
    

    【讨论】:

      猜你喜欢
      • 2019-05-20
      • 2010-09-15
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      • 2018-03-23
      • 1970-01-01
      • 2018-03-21
      • 1970-01-01
      相关资源
      最近更新 更多