SiteMapのセキュリティトリミング時に単一の子ノードに影響を与える方法
-
05-07-2019 - |
質問
ASP.Netサイトがあり、Windows認証とActive Directoryの役割を使用して、一部のページへのアクセスを制限しようとしています。 Scott Guのチュートリアルページが、私が望むものを達成することができません。
SiteMapDataSource
のルートノードを無視しています。 「ドキュメント」を表示したいノードをすべてのユーザーに限定しますが、「検索」の表示を制限しますおよび「アップロード」 2つの異なる役割への役割。私は" DOMAIN \ validrole"にいます" DOMAIN \ madeuprole"にはありません。以下のサイトマップとweb.configを使用すると、すべてのノードが表示されます。 " Documents"から 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>
解決
ソート済み-次のように、Web.configファイルのページへの承認を設定する必要があります。
<location path="Documents/Upload.aspx">
<system.web>
<authorization>
<allow roles="DOMAIN\madeuprole"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
&quot;〜/ Documents / Upload.aspx&quot;
のパスでこれを試しましたが、うまくいきませんでした-構成ファイルに相対的なパスである必要があります。
また、次のようにサイトマップノードにURLを挿入する必要がありました:
<siteMapNode title="Documents" roles="*" url="Made-Up.aspx">
これにより、すべてが消えることはなくなりましたが、理由はわかりません。私はURLを表示していないので、作成されたURLがトリックを実行します。