我正在使用VS2005,而我在使用站点地图标签时遇到了一些问题。
我在ASP.NET配置工具中分配了2个角色,并为每个用户分配了一个角色。
我的登录正常,访问控制正在运行。如果我没有登录并尝试访问角色限制页面,它会将我重定向到登录页面。
但是,当我登录时,假设在我使用正确的特权用户登录时显示的某些站点节点仍未显示。
登录前:
登录后:
从上面的屏幕截图中,我的节点仅在登录时显示Home
且未登录。我应该看到一个不受admin01
限制的数据库管理选项卡。
以下是我的Web.config
代码段:
<system.web>
<authentication mode="Forms" />
<roleManager enabled="true" />
<pages styleSheetTheme="DataWebControls" />
<siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
<providers>
<add name="XmlSiteMapProvider"
description="Default SiteMap provider."
type="System.Web.XmlSiteMapProvider"
siteMapFile="Web.sitemap"
securityTrimmingEnabled="true" />
</providers>
</siteMap>
<compilation debug="true"/>
</system.web>
如果我从<siteMap></siteMap>
删除整个代码,我的节点将显示为正常:
我不期待一个完美的解决方案,因为我不知道我提供的信息是否足够,但我将不胜感激。
如果我需要更多信息,请告诉我,我会提供更多信息。
谢谢
已编辑:已添加Web.sitemap
代码段:
<siteMapNode url="/Project/Default.aspx"
title="Home" description="Home">
<siteMapNode title="Database Management"
description="Database tab">
<siteMapNode url="/Project/Database/Employee.aspx"
title="Employee"
description="" />
<siteMapNode url="/Project/Databaase/Customer.aspx"
title="Customer"
description="" />
<siteMapNode url="/Project/Database/Goods.aspx"
title="Goods"
description="" />
<siteMapNode url="/Project/Database/Transactions.aspx"
title="Past Transactions"
description="" />
</siteMapNode>
</siteMapNode>
已编辑:在文件夹Access role screenshot
上添加了/Project/Database
:
其他信息:
即使未创建访问规则,并且未向用户分配任何角色,仍未显示Database
个节点
答案 0 :(得分:1)
您是否尝试过将role属性添加到相关的sitemapnodes?
<?xml version="1.0" encoding="utf-8" ?>
<siteMap>
<siteMapNode url="/Project/Default.aspx"
title="Home" description="Home">
<siteMapNode title="Database Management"
description="Database tab" roles="Admin">
<siteMapNode url="/Project/Database/Employee.aspx"
title="Employee" roles="Employee,Admin"
description="" />
<siteMapNode url="/Project/Databaase/Customer.aspx"
title="Customer" roles="Customer,Employee,Admin"
description="" />
<siteMapNode url="/Project/Database/Goods.aspx"
title="Goods"
description="" />
<siteMapNode url="/Project/Database/Transactions.aspx"
title="Past Transactions"
description="" />
</siteMapNode>
</siteMapNode>
</siteMap>
您是否检查过网站管理工具添加到您限制访问的文件夹中的web.config文件?因为有时问题就在那里..
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<authorization>
<allow roles="Admin,Employee" />
<deny users="?" />
</authorization>
</system.web>
</configuration>
答案 1 :(得分:1)
我想我找到了一个解决方案。
限制访问的网络配置...
首先允许访问然后拒绝它:
<configuration>
<system.web>
<authorization>
<allow roles="Admin1" />
<deny users="*" />
</authorization>
</system.web>
</configuration
当反之亦然时,链接会消失,并以上述方式显示..
希望它能解决您的问题....因为我为此创建了一个解决方案并进行了测试。 (因为我使用的是sqlsitemapprovider)