注意:相应的软件产品正式发行之前,本文档已经撰写完毕,所以我们不能保证本文档内涉及的细节与最终产品完全一致。文中信息描述的是本文档发布之时的产品,仅供在规划时参考之用。如有更改,恕不另行通知。 我编译了许多 microsoft® asp.net 应用程序,例如客户端应用程序和原型、我自己不断增长的站点和帮助不会编程的家人和朋友所开发的站点,以及文章、演示文稿和培训课程的代码。我经常发现自己在编译每个应用程序时,总有某些重复的任务要做,这其中很大一部分是定义验证模型。保护应用程序资源几乎是设计任何应用程序时必不可少的一项工作。asp.net 1.x 让事情变得简单了些,它提供了一个颇为简单和安全的、基于表单的验证进程,但您仍要纠缠于角色管理和其他工作之中。如果每设计一个新登录表单可以挣 5 美分,那么我现在至少已经挣了 10 多美元,算一算,我设计了多少个表单。即将发行的新版本 asp.net 的开发代号是“whidbey”(与即将发行的新版本 microsoft® visual studio® .net 的开发代号一致),它提供了许多新的配置工具、控件和组件,以支持用于验证用户和管理受保护资源的完整系统。这些新功能十分直观易用,即使您的祖母也能在一天内构建一个安全站点。
直观易用的功能 按照传统做法,为新 web 站点构建一个验证模型通常包括以下步骤:
收集受保护资源和活动的要求,并定义适当的角色和权限。 设计关系数据库表,以存储用户、角色及相关权限。 设计登录页面。 编写代码,以验证用户并收集关联的角色和权限。 添加配置,以基于角色来保护 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”的新应用程序,并启动了管理界面,如下所示:
membershipusercollection members = membership.getallusers (); arraylist arr = new arraylist (); foreach (membershipuser member in members) { arr.add (member); }
虽然此提供程序模型主要旨在简化 web 应用程序的表单验证,但也可用于创建并管理用户和角色的任意验证方案,还可执行通用活动,如密码重设、密码加密和用户验证。
小结 asp.net whidbey 中的新组件和体系结构功能令人赞叹不已。新功能真正让人欣赏之处在于,您可以轻易地把各种功能组合在一起,构建成一个完整的应用程序,此外,对于需要具有可伸缩性的企业级应用程序,您可以非常容易地扩展这些功能。安全性也有了显著的加强。使用新模型使我们可以和使用 xml 配置文件开发可怜的“演示代码”说再见(这些 xml 配置文件保存未加密的凭据,并增加了服务器的文件访问负载)。当截至日期临近时,我们经常冒险发行演示代码。为什么不在第一次就开发出正确的代码呢?现在唯一欠缺的是心灵感应设备驱动程序,可以将我的想法实时转换成代码。
作者简介 michele leroux bustamante 既是 idesign inc. 和 international .net speakers association (ineta) 的一位成员,也是 microsoft 的地区主管,同时,她还是一位公开发表作品的撰稿人。在 idesign,michele 用自己丰富的背景知识致力于 .net 培训和高端的企业咨询。她主要研究 c# 语言、.net framework 体系架构、asp.net 和 web 服务,同时还为技术主管提供指导。可以通过这个地址:[email protected] 与她联系,或访问 idesign:.net design and business solutions(英文)以获得更多信息。此外,也可以访问 .net dashboard(英文),订阅她的 .net 电子通讯月刊。