私の web.config で SiteMapProvider を構成しsecurityTrimmingEnabled="true"
、メイン マスター ページには. さらに、サブフォルダー「Admin」内のすべてのページへの制限付きアクセスを構成しました (このサブフォルダー内の別の web.config を使用)。asp:Menu
asp:SiteMapDataSource
sitemapNode を入れるとWeb.sitemap
...
<siteMapNode url="~/Admin/Default.aspx" title="Administration" description="" >
...ロール「管理者」のユーザーのみが、そのsiteMapNodeに関連するメニュー項目を持ちます。したがって、これは意図したとおりに正常に機能しています。
これで、物理ファイルを新しい URL にマップするために、Global.asax で URL ルートを定義しました。
System.Web.Routing.RouteTable.Routes.MapPageRoute("AdminHomeRoute",
"Administration/Home", "~/Admin/Default.aspx");
しかし、SiteMap ファイルでこのルート URL を使用すると...
<siteMapNode url="Administration/Home" title="Administration" description="" >
... セキュリティ トリミングが機能していないようです: メニュー項目はすべてのユーザーに表示されます。(ただし、ページへのアクセスは引き続き制限されているため、管理者以外のユーザーがメニュー項目を選択しても、制限されたページには移動しません。)
質問: ASP.NET 4.0 Web フォームの URL ルーティングでセキュリティ トリミングを機能させるために、これまで見逃していた設定はありますか? 私は何か間違ったことをしましたか?回避策はありますか?
ご協力ありがとう御座います!