私はこれを理解することはできません。
私は次のサイトマップを持っています
<?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
withがあります。securityTrimmingEnabled="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を書き換えています。