就是这些!仅需作此改变,站点导航系统就会根据当前登录的用户和为在<siteMapNode>元素中的URL定义的授权设置非常聪明地返回正确的部分。下列屏幕快照显示了当分别在匿名访问者(还没有登录的)、普通用户以及Admin用户访问时的TreeView的显示情况。该匿名访问者仅能看到两个链接-Home和 My Blog。普通用户能看到另外的一个链接-Auth Users,而匿名访问者是看不到它的,因为这个结点的url(/~/AuthUsers/Default.aspx)被配置为仅允许认证用户观看。Admin用户还能看到另外其它链接,因为他是管理员角色并且为Admin站点地图结点(~/Admin/Default.aspx)所指向的URL被配置仅允许由管理员存取。
四、 用角色属性阻止安全性修剪
可能有一些时候-你想要显式地通知安全性修剪不要为一个特别的角色或一组角色修剪一个站点地图部分。例如,如果你的站点地图包含一个到外部资源的链接,那么该站点导航系统不可能针对这个远程资源确定授权规则。因此,它为所有的用户修剪该结点。也就是说,如果你启动了安全性修剪功能并且在用一外部链接(如<siteMapNode url="http://www.scottonwriting.net/sowBlog/" title="My Blog"/>)使用一个站点地图,那么,没有用户会在TreeView或Menu控件中看到这些。然而,你可能想要让该站点导航系统为那些具有Administrator和Tester角色的用户显示这一结点。(或不考虑任何用户的角色。)
同样,即使他们没有被授权存取该资源,你也可能想向这些用户显示一个局部站点地图结点。例如,一访问该站点却还没有登录的用户肯定不会看到在TreeView中的Admin链接。然而,我们仍可能想显示之。点击它将会使用户被导航到~/Admin/Default.aspx页面,此时,系统将看到他们没有被认证。这将把他们引导到登录页面。在登录后,他们将被自动地引导回Admin页面。如果他们不是管理员角色,他们将被送回到登录页面,否则他们将被同意存取Admin部分。
为了不修剪针对一个特定的站点地图结点的特别角色,可以使用在相应的<siteMapNode>元素中的角色属性。(注意:这一设置不会应用到descendent<siteMapNode>元素;也就是说,对那些显式地指定另外的应该看到该结点的角色,你必须显式地在每一个<siteMapNode>元素上设置这一属性)。此角色属性能包含一个角色名,一个用逗号间隔列表的角色名字,或一个星号(*)来表示所有的用户。包含在本文末尾的下载文件中的下列站点地图文件显示出怎样使用角色属性来使得所有的用户拥有一个外部的站点地图结点参考。(可以联想到,当启动安全性修剪功能时,如果在此忽略角色属性,这将导致不向任何用户显示这个站点地图结点。)>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/