0

私の web.config で SiteMapProvider を構成しsecurityTrimmingEnabled="true"、メイン マスター ページには. さらに、サブフォルダー「Admin」内のすべてのページへの制限付きアクセスを構成しました (このサブフォルダー内の別の web.config を使用)。asp:Menuasp: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 ルーティングでセキュリティ トリミングを機能させるために、これまで見逃していた設定はありますか? 私は何か間違ったことをしましたか?回避策はありますか?

ご協力ありがとう御座います!

4

1 に答える 1

1

ASP.NET フォーラム ( http://forums.asp.net/t/1563781.aspx ) でこれに回答しましたが、答えはノーです。ただし、プロバイダーはカスタマイズできます。フォーラム投稿のコードを参照してください。

于 2010-06-02T08:09:23.170 に答える