扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在本页阅读全文(共19页)
一、 简介
在本文中,我们将探讨ASP.NET 2.0的会员、角色和配置问题。ASP.NET中的会员系统提供了一个可编程API用于创建和管理用户账户,而其中的角色部分使开发者能够定义一组角色并把用户与角色相关联。典型地,一个提供用户账户的网站都具有只为某些用户、认证用户或属于特定角色的用户所存取的内容部分。
例如,一个Web站点可能有一组页面——它允许一个可信任用户编辑该Web站点的内容或管理已有用户。不是简单地试图隐藏这个页面并且希望没有人偶然在浏览它时遇到麻烦,或硬编码授权而仅仅允许单个用户使用;一种更为强壮和安全的方式是定义一个管理员角色——然后赋给他一组选出来的信任用户。最后,这些管理web页面被进一步配置以允许仅那些具有管理员角色的用户可以进行存取操作。同样,该Web站点可能包含一组只有认证用户可以存取的页面。
既然该站点的某些部分可能只能为某些用户所存取,那么,这就使得我们在建立站点导航时有点进退两难。我们是否要包括那些只有授权用户才能在Web站点的站点地图中存取的页面?如果我们这样做了,那么所有的用户将会在该站点的菜单或树视图中看到受限制的页面。为什么不能向存取它们的用户显示指向这些页面的链接呢?如果我们从站点地图上删除了这些受限制的页面,那么那些来观看这些页面的授权用户就无法容易地导航到它们,因为它们不是站点地图的一部分,并因此不会出现在该站点的树视图或菜单中!
值得庆幸的是,ASP.NET 2.0的站点导航提供了一种称为安全性修剪的特性。当用支持安全性修剪的功能获得站点地图信息时,只有那些当前登录的用户具有访问授权的站点地图结点才是可用的。这意味着,站点的TreeView或Menu将仅包含为当前登录用户可存取的那些部分。要想了解怎样配置站点导航以支持安全性修剪,请接着往下读!
二、 配置ASP.NET 2.0的会员和(可选)角色
既然站点导航安全性修剪把站点地图数据基于访问页面的用户和为站点地图中的页面定义的授权设置,那么在我们可以分析安全性修剪之前,你必须首先配置你的Web站点以使用ASP.NET 2.0的会员服务功能。(你也可以配置该站点来使用角色,并使用基于角色的授权优点,但是这对于展示安全性修剪概念并不作要求。)至于详细讨论怎样配置一站点以使用会员和角色已经超出了本文的范围。
如果你不想在一个新的Web站点上花费时间来安装会员和角色特性的话,你可以使用它。具体地说,在本文后面可下载的Web站点中包含两个角色——管理员(Administrator)和测试员(Tester),并有四个用户:
•Superman,其角色为管理员和测试者
•Admin,其角色为管理员
•Mr.Tester,其角色为测试者
•Average User,没有任何角色
而且,我在该工程中有三个文件夹:Admin,Tester和AuthUsersOnly。前两个文件夹已经被配置仅允许具有管理员和测试者角色的用户存取。AuthUsersOnly文件夹被限制仅用于认证的用户。
三、 配置站点导航以使用安全性修剪
默认地,站点导航并不使用安全性修剪。不管什么用户正在访问站点,并且不管定义什么样的授权规则,当每个用户通过一TreeView或菜单Web控件来观看站点地图数据时,他都被可以看到站点地图中的所有部分。通过启动安全性修剪,站点导航系统将自动地基于当前登录的用户和为站点地图中的<siteMapNode>元素所参考的页面的授权而限制显示结果。
可以使用下列模式通过Web.config文件来配置站点导航设置:
<siteMap defaultProvider="XmlSiteMapProvider" enabled="true"> <providers> <add name="XmlSiteMapProvider" description="Default SiteMap provider." type="System.Web.XmlSiteMapProvider" siteMapFile="siteMapFileName" securityTrimmingEnabled="true" /> </providers> </siteMap> |
回想一下在本系列第一部分中的讨论——站点导航系统使用了提供者模型。这个模型提供给开发者一些良好定义的公共API,但是允许(如果需要的话)定制内部实现细节。缺省地,站点导航特点使用XmlSiteMapProvider-它从XML格式化的站点地图文件Web.sitemap中获得站点地图信息。你可以通过Web.config文件来改变所使用的提供者,或修改针对缺省提供者的缺省设置。
为了定制缺省提供者的设置,只要简单地添加一新的提供者-它使用与缺省提供者(System.Web.XmlSiteMapProvider)相同的类型来定制所需要的设置。上面显示的代码片段展示了定制两个XmlSiteMapProvider的设置:
•siteMapFile设置指定由提供者所使用的站点地图文件的文件名;缺省地,这个值是Web.sitemap。你如果喜欢,可以在此定制文件名。但是,我鼓励你确保站点地图文件名以.sitemap扩展名结尾,因为缺省地这个扩展名被ASP.NET引擎保护,从而阻止web访问者观看站点地图文件。
•securityTrimmingEnabled设置显示是否使用安全性修剪。为了使用安全性修剪,可以把它设置为true,如上面所示。
就是这些!仅需作此改变,站点导航系统就会根据当前登录的用户和为在<siteMapNode>元素中的URL定义的授权设置非常聪明地返回正确的部分。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者