0

私は私のサイトで奇妙な問題に直面しています、私は私が扱っているメニューを持っています、asp:menuそして今私はに基づいSiteMapて制限したいので、私はweb.configで使用しています、今私の問題は私が有効にする必要があるいくつかのメニュー項目を持っていることです2種類のユーザー(管理者とログインユーザー)によって、ファイルに作成され、メニューで使用されます。ここに、メニューにアクセスできるユーザーの種類を指定する属性を追加しました。ホームメニューがあります。これらの2人のユーザーのみがアクセスする必要があり、他のユーザーはアクセスできません(つまり、匿名ではありません)。属性で複数の役割を指定する方法が見つかりません。指定も試みましたが、匿名以外のユーザーでも機能するようです。私の要件ではありません、これが私のサンプルですmenu'srolessecurityTrimmingEnable="true"Web.SitemapsiteMapNoderolesroles*web.sitemapファイル

 <siteMapNode roles="*">
    <siteMapNode roles="Administrator" url="~/default.aspx" title="HOME" />
 </siteMapNode>

上記の場合、ホームメニューは管理者のみが利用できます。これで、管理者ではないがログインしているユーザーが利用できるように指定*すると、ログインしていないユーザーでも機能します。

 <siteMapNode roles="*">
    <siteMapNode roles="*" url="~/default.aspx" title="HOME" />
 </siteMapNode>

とにかく、管理者とログインしているユーザーだけが上記のメニューを利用できるようにすることはできますか?
以下は私のweb.config設定です:

<siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
      <providers>
        <clear/>
        <add name="XmlSiteMapProvider"
          description="Default SiteMap provider."
          type="System.Web.XmlSiteMapProvider "
          siteMapFile="Web.sitemap"
          securityTrimmingEnabled="true" />
      </providers>
    </siteMap>
4

1 に答える 1

0

実際には、ロール属性の使用法について誤解があります。あなたの場合、「管理者」に制限する代わりに、他の役割にも表示されます。<location>メニュー項目は、web.configファイルのタグを使用して指定された認証設定に基づいて制限されます。詳細については、以下の記事をご覧ください。

http://stweet.wordpress.com/2010/06/13/designing-the-folder-structure-of-the-asp-net-web-application/

于 2012-12-17T21:41:56.087 に答える