首页
论坛
门户
空间
手机版
IXPUB
插件
收藏
设置
注册
登录
商店
搜索
培训
Wiki
Blog
归档
丛书
退出
ITPUB论坛
»
Web开发
»
ASP.NET与AJAX
» ASP.NET 2.0的会员、角色及配置问题的探讨
‹‹ 上一主题
|
下一主题 ››
投票
交易
悬赏
活动
评价
|
打印
|
推荐
|
订阅
|
收藏
标题: ASP.NET 2.0的会员、角色及配置问题的探讨
马甲走江湖
江湖任我行
精华贴数 4
个人空间
70
技术积分 19687 (47)
社区积分 26189 (42)
注册日期 2006-10-26
论坛徽章:151
#1
使用道具
发表于 2006-11-8 13:40
ASP.NET 2.0的会员、角色及配置问题的探讨
一、 简介
在本文中,我们将主要探讨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站点上花费时间来安装会员和角色特性的话,你可以使用它。具体地说,在本文后面可下载的Web站点中包含两个角色-管理员(Administrator)和测试员(Tester),并有四个用户:
·Superman,其角色为管理员和测试者
·Admin,其角色为管理员
·Mr.Tester,其角色为测试者
·Average User,没有任何角色
而且,我在该工程中有三个文件夹:Admin,Tester和AuthUsersOnly。前两个文件夹已经被配置仅允许具有管理员和测试者角色的用户存取。AuthUsersOnly文件夹被限制仅用于认证的用户。
__________________
The following programme is not suitable for children
香车圈子,欢迎您的加入
只看该作者
马甲走江湖
江湖任我行
精华贴数 4
个人空间
70
技术积分 19687 (47)
社区积分 26189 (42)
注册日期 2006-10-26
论坛徽章:151
#2
使用道具
发表于 2006-11-8 13:40
三、 配置站点导航以使用安全性修剪
默认地,站点导航并不使用安全性修剪。不管什么用户正在访问站点,并且不管定义什么样的授权规则,当每个用户通过一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定义的授权设置非常聪明地返回正确的部分。下列屏幕快照显示了当分别在匿名访问者(还没有登录的)、普通用户以及Admin用户访问时的TreeView的显示情况。该匿名访问者仅能看到两个链接-Home和 My Blog。普通用户能看到另外的一个链接-Auth Users,而匿名访问者是看不到它的,因为这个结点的url(/~/AuthUsers/Default.aspx)被配置为仅允许认证用户观看。Admin用户还能看到另外其它链接,因为他是管理员角色并且为Admin站点地图结点(~/Admin/Default.aspx)所指向的URL被配置仅允许由管理员存取。
__________________
The following programme is not suitable for children
香车圈子,欢迎您的加入
只看该作者
马甲走江湖
江湖任我行
精华贴数 4
个人空间
70
技术积分 19687 (47)
社区积分 26189 (42)
注册日期 2006-10-26
论坛徽章:151
#3
使用道具
发表于 2006-11-8 13:41
四、 用角色属性阻止安全性修剪
可能有一些时候-你想要显式地通知安全性修剪不要为一个特别的角色或一组角色修剪一个站点地图部分。例如,如果你的站点地图包含一个到外部资源的链接,那么该站点导航系统不可能针对这个远程资源确定授权规则。因此,它为所有的用户修剪该结点。也就是说,如果你启动了安全性修剪功能并且在用一外部链接(如<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文件一样地容易。
__________________
The following programme is not suitable for children
香车圈子,欢迎您的加入
只看该作者
tang2049
天王(收地租)
精华贴数 6
个人空间
0
技术积分 32664 (25)
社区积分 76335 (4)
注册日期 2005-9-25
论坛徽章:6
#4
使用道具
发表于 2006-11-11 23:50
楼主的帖子可以发得紧凑一些的……
只看该作者
tang2049
天王(收地租)
精华贴数 6
个人空间
0
技术积分 32664 (25)
社区积分 76335 (4)
注册日期 2005-9-25
论坛徽章:6
#5
使用道具
发表于 2006-11-11 23:51
虽然有灌水嫌疑,还是要支持一下……
只看该作者
投票
交易
悬赏
活动
相关内容
ITPUB论坛
≡ 数据库技术 ≡
> Oracle数据库管理
> Oracle开发
> Oracle Developer Suite
> Oracle入门与认证
> Oracle专题深入讨论
> Oracle新技术/11g
> Oracle电子文档
> Oracle Application Server套件
> IBM数据库产品
> MS SQL Server
> Sybase管理与开发
> MySQL及其它开源数据库
> 内存数据库
> 数据仓库与数据挖掘
> 移动及嵌入式数据库
≡ 企业信息化 ≡
> ERP产品与实践
> CRM产品与实践
> HR产品与实践
> 物流
> 供应链
> 供应链建模与仿真
> 物流设备与系统工程
> 企业管理咨询
> 管理协同与办公自动化
> IT服务管理
> 数据中心建设
> ERP二次开发
> Oracle ERP
> EBS相关文档
> PeopleSoft与JDE
> SAP R/3
> SAP Business One开发与快速实施
> SAP财务及CRM
> SAP后勤及HR
> mySAP ERP
> 系统开发及跨应用设置
> SAP相关文档
> 国外其它ERP产品
> 国内ERP产品
≡ 开发技术 ≡
> Java入门与认证版
> Java web开发及框架技术
> Java企业开发
> ASP.NET【已迁移到微软开发技术论坛】
> .Net企业开发与应用【已迁移到微软开发技术论坛】
> WEB程序开发
> WEB 2.0技术
> 动态语言
> 移动与游戏开发
≡ 系统设计与项目管理 ≡
> 系统分析与UML
> 系统分析与UML精华区
> 项目管理
> 项目过程
> 软件测试
> 算法讨论与研究
≡ IBM软件技术园地 ≡
> IBM数据库产品
> Lotus
> Tivoli
> Websphere
> Rational
> 与SOA相关的IBM产品与技术
> IBM软件技术精英协会
> 软件技术精英活动专版
≡ 操作系统与硬件 ≡
> AIX及IBM产品【已迁移到IXPUB】
> HP-UX及HP产品【已迁移到IXPUB】
> Solaris及SUN产品【已迁移到IXPUB】
> Linux及其应用 【已迁移到IXPUB】
> 其它UNIX系统【已迁移到IXPUB】
> windows系统及微软相关产品 【已迁移到IXPUB】
> 存储设备与容灾技术 【已迁移到IXPUB】
> 服务器 【已迁移到IXPUB】
≡ 行业纵向讨论区 ≡
> IT业界评论与展望
> 政府与教育事业
> 中国政府信息主管联盟
> 电信行业
> 金融行业
> 医卫行业
> 制造行业
> 电力行业
> 信息安全与审计
≡ 会员交流 ≡
> IT职业生涯
> 招聘求职商务信息
> 体育世界
> 体育博彩专版
> 旅游,驴友
> 汽车世界
> 外语角
> 数码摄影
> 你的故事我的歌
> 音乐推荐区
> 电子图书与IT文档资料
> 软件交流
> 软件交流精华区
≡ ITPUB产品与服务 ≡
> ITPUB地面活动专版
> BLOG天地
> WIKI世界
> 授权用户区
> 站务管理
≡ 微软开发技术 ≡
> 开发工具和语言
> .NET Framework 相关
> Visual Basic/VB.net
> Visual C#
> Visual C++/vc.net
> Visual Studio
> .NET软件架构与模式
> .NET开发辅助工具及框架
> Web开发
> ASP.NET与AJAX
> Web相关技术讨论(IIS等)
> Silverlight 技术
> 微软企业级产品技术
> SQL Server
> windows server
> SharePoint
> Exchange Server
> Biztalk
> 嵌入式及移动开发
> Windows Embedded 嵌入式技术
> Windows 移动设备
> Office开发
> Microsoft office system
> Office Business Application
> 微软产品用户交流区
> .Net电子书籍&&书籍介绍
> .Net人才交流
技术积分榜
社区积分榜
徽章
电子杂志
会员
团队
统计
邮箱
游乐场
帮助
TOP
CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号
联系我们
法律顾问
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
升级个人空间
基本概况
论坛排行
主题排行
发帖排行
积分排行
在线时间
管理团队
管理统计