1

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>
4

1 に答える 1

1

並べ替え-次のように、Web.configファイルのページへの認証を設定する必要があります。

<location path="Documents/Upload.aspx">
    <system.web>
        <authorization>
            <allow roles="DOMAIN\madeuprole"/>
            <deny users="*"/>
        </authorization>
    </system.web>
</location>

パスを使用してこれを試しました"~/Documents/Upload.aspx"が、機能しませんでした。構成ファイルからの相対パスである必要があります。

また、次のようにサイトマップノードにURLを配置する必要がありました。

<siteMapNode title="Documents" roles="*" url="Made-Up.aspx">

理由はわかりませんが、これですべてが消えなくなりました。私はURLを表示していないので、どんな作り上げのURLでもうまくいきます。

于 2009-11-27T13:34:20.430 に答える