我想不通这个。
我有以下站点地图
<?xml version="1.0" encoding="utf-8" ?> <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > <siteMapNode url="~/" title="Root" description="Go root"> <siteMapNode url="~/h" title="Home" description="Go home" /> <siteMapNode url="~/h/uo" title="Ultima Online" description="Ultima Online"> <siteMapNode url="~/h/uo/get" roles="RegisteredUser" title="Get account!" description="Get account!" /> </siteMapNode> </siteMapNode> </siteMap>
我有一个
XmlSiteMapProvider
withsecurityTrimmingEnabled="true"
,它指向这个站点地图文件。我要修剪
authorization
的文件在它的文件夹中有一条规则web.config
<configuration> <system.web> <authorization> <deny users="?" /> </authorization> </system.web> </configuration>
无法通过 url 访问该文件,如果我键入
http://localhost/h/uo/get
我会被重定向到登录页面。我
<asp:Menu>
在母版页文件中设置了这样的:<asp:SiteMapDataSource ID="MenuSiteMap" ShowStartingNode="false" SiteMapProvider="MenuSiteMapProvider" runat="server" /> <div> <asp:Menu ID="NavigationMenu" runat="server" DataSourceID="MenuSiteMap" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal" /> </div>
然而,当页面被渲染Get account
时,无论如何我都会看到在我什至没有登录时应该被修剪的节点。
- 我究竟做错了什么?
- 有没有其他方法来构建启用安全修剪的站点地图导航菜单?
我正在使用 ASP.NET 4.0,并使用 HttpModule 重写 URL。