我無法弄清楚這一點。基於角色的菜單不起作用,我做錯了什麼?
我有以下的網站地圖
<?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>
我已經與
securityTrimmingEnabled="true"
,它指向這個網站地圖文件的XmlSiteMapProvider
。文件我要修剪有
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重寫。