Windows 認証と Active Directory の役割を使用して一部のページへのアクセスを制限しようとしている ASP.Net サイトがあります。Scott Guのチュートリアル ページを見てきましたが、私が望むものを完全に達成することはできません。
のルート ノードを無視していSiteMapDataSource
ます。「ドキュメント」ノードをすべてのユーザーに表示したいのですが、「検索」ロールと「アップロード」ロールの表示を 2 つの異なるロールに制限します。私は「DOMAIN\validrole」にいますが、「DOMAIN\madeuprole」にはいません。以下のサイトマップと web.config を使用すると、すべてのノードが表示されます。roles="*"
「ドキュメント」ノードから削除すると(Scott Gu の提案に従って)、ノードが表示されません。
カスタム コードを記述せずに、個々の子ノードの表示を制限する方法はありますか?
これは私のサイトマップです:
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">
<siteMapNode url="~/Default.aspx"
title="Home">
<siteMapNode title="Documents" roles="*">
<siteMapNode url="~/Documents/Search.aspx"
title="Search Documents"
roles="DOMAIN\validrole" />
<siteMapNode url="~/Documents/Upload.aspx"
title="Upload Documents"
roles="DOMAIN\madeuprole" />
<siteMapNode url="~/Documents/Publish.aspx"
title="Publish Documents" />
</siteMapNode>
<siteMapNode title="Users" roles="*">
<siteMapNode url="~/Users/Search.aspx"
title="Search Users"
roles="DOMAIN\validrole" />
</siteMapNode>
</siteMapNode>
</siteMap>
そして、これは私のweb.configの関連セクションです:
<authentication mode="Windows"/>
<authorization>
<allow roles="DOMAIN\validrole"/>
<deny users="*"/>
</authorization>
<siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
<providers>
<add name="XmlSiteMapProvider"
description="Default SiteMap provider."
type="System.Web.XmlSiteMapProvider"
siteMapFile="Web.sitemap"
securityTrimmingEnabled="true" />
</providers>
</siteMap>