概要はこちら
- メンバーシップを作成する
- ロールを作成する
- サイトマップの作成 (roles="admin" を使用するように変更)
- メニュー スマート タグの新しいデータソースを使用して、メニューを作成し、web.sitemap をメニューにバインドします。
- web.config を変更して securityTrimmingEnabled を有効にします
それはこのように動作します。サイトマップのルート ノードにロールを割り当てると、割り当てられているロールを除く他のすべてのロールに対してメニューが正しく非表示になります。
サブメニューの 1 つで役割を使用すると、機能しません。誰かが理由を知っていますか?
web.サイトマップ
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode roles="*"> <--------------- Roles Works here
<siteMapNode title="Home" url="~/Default.aspx" roles="admin"></siteMapNode> <-------- But not here
<siteMapNode title="Videos" url="~/Tags.aspx" />
<siteMapNode title="Student" url="~/MemberList.aspx" roles="student"/>
<siteMapNode title="My Page" url="~/MyPage.aspx" />
<siteMapNode title="My Recent Views" url="~/RecentViews.aspx" />
<siteMapNode title="Upload a Video" url="~/Upload.aspx" />
<siteMapNode title="Administer Users" url="~/AdministerUsers.aspx" roles="admin">
<siteMapNode title="Creat user" url="createUser.aspx"></siteMapNode>
</siteMapNode>
</siteMapNode>
</siteMap>
web.config ファイル (変更)
<siteMap enabled="true">
<providers>
<clear/>
<add siteMapFile="Web.sitemap" name="AspNetXmlSiteMapProvider" type="System.Web.XmlSiteMapProvider" securityTrimmingEnabled="true"/>
</providers>
</siteMap>