Here is the overview
- Create Memberships
- Create Roles
- Create Sitemap (modify to use roles="admin")
- Create Menu and bind web.sitemap to the menu, using new datasource from the menu smart tag
- Modify web.config to enable securityTrimmingEnabled
It works like this. If I assign a role to the root node in sitemap, the menu is correcty hidden for all other roles except the roles it is assinged to.
If I use role in one of the submenu, it does not work. Does anyone has a clue why?
web.sitemap
<?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 file (modification)
<siteMap enabled="true">
<providers>
<clear/>
<add siteMapFile="Web.sitemap" name="AspNetXmlSiteMapProvider" type="System.Web.XmlSiteMapProvider" securityTrimmingEnabled="true"/>
</providers>
</siteMap>