webConfig和SiteMap中Role的困惑和功能(网上转载)

在 ASP.NET 2.0 的 Web.sitemap 文件中,siteMapNode 有个属性 roles ,乍一看,就象是设置此结点允许哪些角色可以访问/显示,如:

<siteMapNode url="~/Admin/Default.aspx" title="系统管理" description="" roles="Manager"> 好象就表示属于 Manager 角色的用户可以访问/显示。但我在使用的时候却发现,无论当前用户是否登录,是否属于 Manager 角色,这个菜单项都能正常显示,且能正常进入,那这个 roles 属性的意义到底在哪里呢?

后来查了一下才发现,要想达到我说的效果(即根据用户的角色自动显示/隐藏菜单项),必须进行如下两个步骤:

1) Web.Config 的 SiteMap 中启用安全修整,完成后如下所示:

<siteMap defaultProvider="default">
   <providers>
     <clear/>
     <add name="default" type="System.Web.XmlSiteMapProvider" siteMapFile="web.sitemap" securityTrimmingEnabled="true" />
   </providers>
</siteMap>

2)利用 Web.config 来实现文件或URL授权,即对 Admin 目录下的设置访问规则(可以利用 VS 2005 中的 ASP.NET 配置来实现),完成后如下所示:

<system.web>
   <authorization>
     <allow roles="Manager" />
     <deny users="*" />
   </authorization>
</system.web>

现在菜单终于可以自动根据用户的角色是否属于 Manager 来显示/隐藏了,但问题是,这好象完全是 Web.config 来设置的,和 siteMapNode 中的 roles 一点关系也没有,那这么 roles 的意义在哪里呢?

从 MSDN 中找出这么一段话:“当用户属于 roles 属性中列出的某一角色时,使用该属性后,ASP.NET 可避开与 siteMapNode 关联的 URL 授权限制。”,可是如果我想避开限制的话,我就根本不用在 Web.config 中设置。既然在 Web.config 中设置了限制,却又在这里用 roles 绕开限制,是不是吃饱没事干了?

现在唯一能为这个 roles 找到一个很小的用处就是,如果结点上不指定 url 属性,可以利用此属性(roles="*")来强制显示此结点,以便能够显示下一级结点,如:

<siteMapNode url="" title="系统管理" description="" roles="*">
     <siteMapNode url="~/Admin/Member_List.aspx" title="用户管理" description=""/>
     <siteMapNode url="~/Admin/Role_List.aspx" title="角色配置" description="" />
</siteMapNode>

由于 url 没有值,所以只要 Admin 目录下利用 web.config 设置了授权规则,安全调整在检查时会隐藏“系统管理”这个结点,但设置了 roles="*" 后,可以强制显示此结点,这样下面的两个子结点(菜单项)也能正常根据角色来显示。但是,这个理由也不充分,因为将 url 设置成 "~/Admin" ,也能达到上述效果。

那么,siteMapNode 结点中的这个 roles 属性的作用到底在哪里呢?

 

SiteMap和Web.config中的Role的区别:

在sitemapnode的roles中设置你想要access(操作)这个节点的角色名,比如:
<siteMapNode url="~/Admin/Default.aspx" title="系统管理" description="" roles="Manager">
只有manager才能看到这个节点

sitemaproles用于visibility (显示)
web。config的location用于access (操作)

这个道理很简单,我来解释一下,主要是用于项目中的受限用户对某个页面链接没有权限还是需要让该用户看到的情况,比如,当会员登陆后,他的个人界面有一个菜单,菜单中有所有可以看到的功能,但是有些功能他必须付费后才能使用,那么就必须设置roles属性了。就象这样子可以让user组的成员可以看到系统管理的链接
<siteMapNode url="~/Admin/Default.aspx" title="系统管理" description="" roles="Manager,user">
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值