日期:2012-01-22 浏览次数:20425 次
2003 年 10 月
适用于:
Microsoft® ASP.NET Whidbey
摘要:学习 ASP.NET Whidbey 及其新的配置工具、控件和组件如何支持用于验证用户和管理受保护资源的完整系统。
下载 ASPNETWhidbeySecuritySample.msi。(请注意,在示例文件中,程序员的注释使用的是英文,本文中将其译为中文是为了便于读者理解。)
直观易用的功能
配置界面
拖放安全控件
按角色过滤内容
成员身份和角色提供程序
但是,这个程序是可扩展的吗?
小结
注意:相应的软件产品正式发行之前,本文档已经撰写完毕,所以我们不能保证本文档内涉及的细节与最终产品完全一致。文中信息描述的是本文档发布之时的产品,仅供在规划时参考之用。如有更改,恕不另行通知。
我编译了许多 Microsoft® ASP.NET 应用程序,例如客户端应用程序和原型、我自己不断增长的站点和帮助不会编程的家人和朋友所开发的站点,以及文章、演示文稿和培训课程的代码。我经常发现自己在编译每个应用程序时,总有某些重复的任务要做,这其中很大一部分是定义验证模型。保护应用程序资源几乎是设计任何应用程序时必不可少的一项工作。ASP.NET 1.x 让事情变得简单了些,它提供了一个颇为简单和安全的、基于表单的验证进程,但您仍要纠缠于角色管理和其他工作之中。如果每设计一个新登录表单可以挣 5 美分,那么我现在至少已经挣了 10 多美元,算一算,我设计了多少个表单。即将发行的新版本 ASP.NET 的开发代号是“Whidbey”(与即将发行的新版本 Microsoft® Visual Studio® .NET 的开发代号一致),它提供了许多新的配置工具、控件和组件,以支持用于验证用户和管理受保护资源的完整系统。这些新功能十分直观易用,即使您的祖母也能在一天内构建一个安全站点。
按照传统做法,为新 Web 站点构建一个验证模型通常包括以下步骤:
即使只是构建几个可重复使用的组件来封装上述某些重复性任务,您仍会感到肩上的工作负担减轻了不少。ASP.NET Whidbey 的新组件大大减少了上述步骤中的五个步骤的工作量,至少将其减少为了原来工作量的一部分。我将使用新的基于 Web 的管理向导来自动创建一组表,以处理用户、角色和权限。在同一个管理界面中,我还会就登录、成员身份和角色管理对应用程序进行配置。我将在一秒钟(或者说仅仅是在 Web 表单中拖放一个登录控件的时间)之内设计出一个登录页面,而且我根本不用编写一行用于验证用户或关联角色的代码,因为这些会自动完成。根据用户角色和登录状态的不同,呈现的菜单和页面内容也将不同,但我同样无需为此编写任何代码。
是不是有梦想成真的感觉?让我们看看这是如何实现的。
ASP.NET Whidbey 包括一个新的基于 Web 的配置工具,它运行于特定应用程序的上下文中,这样便可以通过交互的方式来修改应用程序自身的 web.config 文件。该工具带有许多向导,其中一个可以引导您完成设置安全选项的全部步骤。使用 Visual Studio“Whidbey”完成新 Web 站点的创建后,您可以通过两种方法启动该配置工具:从“Solution Explorer”(解决方案资源浏览器)中选择“ASP.NET Configuration”(ASP.NET 配置)图标或从“Website”(站点)菜单中选择“ASP.NET Configuration”(ASP.NET 配置)。
图 1:从“Solution Explorer”(解决方案资源浏览器)或主菜单启动基于 Web 的配置实用工具。
配置 Web 界面启动时会显示一个查询字符串,指示要配置的应用程序目标。在本文中,我创建了一个名为“MySecureNewsletter”的新应用程序,并启动了管理界面,如下所示:
图 2:在我的计算机上启动管理界面的 URL 是 http://localhost:10245/ASP.NETWebAdminFiles/default.aspx?
applicationPhysicalPath=H:\WebSites\MySecureNewsletter\&applicationUrl=/MySecureNewsletter。
“Security”(安全)选项卡中的一个选项是运行“Security Setup Wizard”(安全设置向导)。对于一个新应用程序,应当首先运行该向导。向导界面的左侧面板显示了将要逐步执行的步骤列表,并指出您当前所在的步骤:
图 3:安全设置向导使用 ASP.NET Whidbey 的某些其他很酷的功能,例如用于导航的向导控件。
设置过程中的步骤非常简单,所以在此仅概述我为示例应用程序所选的选项。首先,向导询问我该站点是 Intranet 站点还是 Internet 站点。前者默认使用 Windows 验证,后者(也是我的选择)将把应用程序配置为使用表单验证。下一步,向导显示创建数据库以存储用户和角色的选项。如果选择此选项,向导将询问我是选择创建 Microsoft Access 数据库还是创建 Microsoft SQL Server 数据库,然后引导我完成几个附加的步骤。我没有选择这个选项,所以在应用程序的 \Data 目录下将创建一个默认的 Access 数据库。在 machine.config 文件中,<connectionString>
元素指定了 Access 数据库的默认位置:
<connectionStrings> <add name="LocalSqlServer" connectionString="data source=127.0.0.1;Integrated Security=SSPI" /> <add name="AccessFileName" connectionString="~\DATA\ASPNetDB.mdb" /> </connectionStrin