日期:2014-05-19  浏览次数:20326 次

怎麼樣讓membership的角色與web.sitemap結合起來限制是否顯示的標題?
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,或者去网上查询相关资料,这里就不多说了。
还有就是,你在这里做的仅仅是让那些没有角色权限的人看不到特定的链接,在页面你也应当做好权限验证,这样你的这个功能才有实际的用处。