为了让自己的asp:Menu支持角色,在web.config的provider加上securityTrimmingEnabled=”true” ,但是需要注意的是:
1. 每个provider都要加上这个属性;
2. sitemap文件中不要加这个属性;
3. sitemap中定义好允许哪个角色即可,但下级默认继承上级,尤其是sitemap只能有一个根节点,所有不得不定义一个User角色来给根节点,同时所有用户加到User这个角色中;
4. 一级菜单的url属性留空,仅作分类用,否则role控制无效。
不知道是否为最规范的做法,反正目前可以用了,呵呵。
<siteMap enabled=”true” defaultProvider=”XmlSiteMapProvider” >
<providers>
<add name=”XmlSiteMapProvider” type=”System.Web.XmlSiteMapProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a” siteMapFile=”Web.sitemap” securityTrimmingEnabled=”true” />
<add name=”XmlSiteMapProviderCustomer” type=”System.Web.XmlSiteMapProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a” siteMapFile=”Customer.sitemap” securityTrimmingEnabled=”false” />
</providers>
</siteMap>