web.sitemap文件內容
<siteMap xmlns= "http://schemas.microsoft.com/AspNet/SiteMap-File-1.0 ">
<siteMapNode title= "首頁 " description= "Home " url= "Default.aspx " >
<siteMapNode title= "註冊 " description= "公司註冊 " roles = "* " url = " ">
</siteMapNode>
<siteMapNode title= "Members " description= "Members " url= "test/test2.aspx " >
<siteMapNode title= "My Account " description= "My Account " url= "test/test3.aspx " />
<siteMapNode title= "Products " description= "Products " url= "test/test4.aspx " roles= "Global Administrators "/>
</siteMapNode>
</siteMapNode>
</siteMap>
怎麼樣讓 Members這個sitemapnode不顯示出來,只有有對應的角色才可以顯示?
------解决方案--------------------------------------------------------
在siteMap配置里面,没个siteMapNode配置节里有roles这个属性,这个属性的目的是为了限制特定的角色的用户可以查看此节点。但是要使这个节点起作用,前提是得启用安全调整,可以在web.config配置如下配置项启用安全调整:
<system.web>
<siteMap defaultProvider= "XmlSiteMapProvider " enabled= "true ">
<providers>
<add name= "XmlSiteMapProvider " type= "System.Web.XmlSiteMapProvider " securityTrimmingEnabled= "true " siteMapFile= "Web.sitemap "/>
</providers>
</siteMap>
</system.web>
然后你在web.sitemap里面把各个节点的角色配置好,这已经完成了第一步。
第二步,就是让ASP。NET能够识别你的角色,关于这一点,你可以参见MSDN,或者去网上查询相关资料,这里就不多说了。
还有就是,你在这里做的仅仅是让那些没有角色权限的人看不到特定的链接,在页面你也应当做好权限验证,这样你的这个功能才有实际的用处。