奇怪的SiteMap

最近的一个项目中,要求有一个Menu,不同的Role能访问到不同的Menu Node。
现在已经做好了Role,很自然看到sitemap里面有Roles这个属性可以输入,查一查,还支持逗号“,”分号“;”来区分不同的Role,恩,很好,至少现在看起来很好。
很快的整一下Sitemap,看上去像这样。
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
    
<siteMapNode url="" title="个人区" description="" roles="use,admin">
      
<siteMapNode url="~/personal.aspx" title="个人"/>
    
</siteMapNode>
    
<siteMapNode url="" title="管理区"  description="" roles="admin">
      
<siteMapNode url="~/manage.aspx" title="管理"/>
    
</siteMapNode>
</siteMap>
 
很快的测试一下,发现不行,为什么?没写错丫……
 
 
然后在Web.config实现URL授权,对啊,Roles的意义在哪里?等等,我们仔细看看系统,使用Role的情况下,往往系统是有一部分的页面只能被某些Role访问的,那么规范起见,我们往往将这些东西(模块)放在一个物理文件夹下,应为哪儿能放一个web.config,可以继承父目录的授权。
 
管理(admin)目录下的web.config 看上去应该是这样:
  <system.web>
    
<authorization>
      
<allow roles="admin"/>
      
<deny users="*"/>
    
</authorization>
  
</system.web>
 
个人(person)目录下的web.config看上去应该是
  <system.web>
    
<authorization>
      
<allow roles="user"/>
      
<deny users="*"/>
    
</authorization>
  
</system.web>
 
更改了系统的物理结构、增加了web.config后,sitemap也会变成这样,那么之前需要的效果就达到了。
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
    
<siteMapNode url="" title="个人区" description="" roles="use,admin">
      
<siteMapNode url="~/person/personal.aspx" title="个人"/>
    
</siteMapNode>
    
<siteMapNode url="" title="管理区"  description="" roles="admin">
      
<siteMapNode url="~/admin/manage.aspx" title="管理"/>
    
</siteMapNode>
</siteMap>

 

 

<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
展开阅读全文

没有更多推荐了,返回首页