科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件ASP.NET2.0导航功能之配置会员和角色(2)

ASP.NET2.0导航功能之配置会员和角色(2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文我们将主要探讨ASP.NET 2.0的会员、角色和配置问题。ASP.NET中的会员系统提供了一个可编程API用于创建和管理用户账户,而其中的角色部分使开发者能够定义一组角色并把用户与角色相关联。

作者:朱先忠编译 来源:天极开发 2007年9月2日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
下列屏幕快照显示了当分别在匿名访问者(还没有登录的)、普通用户以及Admin用户访问时的TreeView的显示情况。该匿名访问者仅能看到两个链接-Home和 My Blog。普通用户能看到另外的一个链接-Auth Users,而匿名访问者是看不到它的,因为这个结点的URL(~/AuthUsers/Default.aspx)被配置为仅允许认证用户观看。Admin用户还能看到另外其它链接,因为他是管理员角色并且为Admin站点地图结点(~/Admin/Default.aspx)所指向的URL被配置仅允许由管理员存取。

当由匿名访问者访问时的TreeView
为普通用户访问时的TreeView
为Admin访问时的TreeView

四、 用角色属性阻止安全性修剪

可能有一些时候-你想要显式地通知安全性修剪不要为一个特别的角色或一组角色修剪一个站点地图部分。例如,如果你的站点地图包含一个到外部资源的链接,那么该站点导航系统不可能针对这个远程资源确定授权规则。因此,它为所有的用户修剪该结点。也就是说,如果你启动了安全性修剪功能并且在用一外部链接(如<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" >

<siteMapNode url="~/Default.aspx" title="Home">

<siteMapNode url="~/About.aspx" title="About" />

<siteMapNode url="~/Admin/Default.aspx" title="Admins" />

<siteMapNode url="~/Tester/Default.aspx" title="Tester" />

<siteMapNode url="~/AuthUsers/Default.aspx" title="Auth Users Only" />

<!-- For links to outside resources, need to explicitly define what

roles should be shown this section -->

<siteMapNode url="http://www.scottonwriting.net/sowBlog/" title="My Blog"

roles="*" />

</siteMapNode>

</siteMap>

该角色属性还可以用于在安全性修剪功能性上增加一些性能改进。在启动了安全性修剪功能后,站点导航提供者为所有的定义在站点地图中的结点自动地检查授权规则。对于那些你想要向所有的用户显示的结点,通过添加roles="*",你可以绕过这一检查,如上例中所示。通过添加这个属性,你会短路正常的授权检查,从而改进安全性修剪性能。

五、 结论

除了提供站点导航支持外,ASP.NET 2.0还使得构建包括用户帐户支持和基于角色的授权的Web站点非常容易。随之而来的并不令人感到惊奇-这两个系统可以互操作并且提供一个站点地图-其返回内容是基于当前登录的用户和定义在站点地图中的URL的授权设置。配置站点导航以限制基于访问用户和授权设置的结果就象把一些代码添加Web.config文件一样地容易。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章