.NET里的表单验证:使用数据库

ZDNet软件频道 时间:2003-06-10 作者:ZDNet China |  我要评论()
本文关键词:
和前一篇文章里基于Web.config的解决方案相比,通过把用户信息保存在数据库里,我们又向自己网站的认证系统里添加了相当多的功能。
本文译自Builder.com,未经许可请勿转载我们上次讨论过,使用ASP.NET里表单验证最简单的方法是把所有的信息都保存在Web.config文件里,包括用户名和密码。这是让基本的验证在你网站上迅速起作用和运行的好方法,但是它还是有很大的局限性。尤其是:
  • 你无法使用注册表单让新用户添加他们自己,因为在网站运行的时候,你不能编辑应用程序的代码,也不能重新保存Web.config文件。
  • 通过手动编辑Web.config文件来添加用户是很辛苦的,它还需要你的Web应用程序重启,这会影响到已有的访问者。
  • 用户不能定期更改自己的密码。


要突破这些局限,我们就应该停止使用Web.config作为保存用户信息的地方,并把这些信息转移到数据库里。在用户填好登录表单之后,我们就可以通过修改验证代码来查询这个数据库了。下面就是我们要做的,简而言之就是:

  1. 更改Web.config,把直接保存在里面的用户信任书移走。
  2. 更改我们登录按钮的代码,这样它就能够调用另一个函数,从而将用户信息和数据库里的信息进行对比验证。
  3. 编写一个validateUser方法,负责辨别用户是否存在以及他或者她是否提供了正确密码的大部分工作都由它完成。
  4. 编写一个addUser方法,用来把新用户放到数据库里。

为了保持连贯性,我们基本上会使用前一篇文章里用过的代码列表,只是要在所需要的地方进行修改。但是这不意味着你就一定需要读前面的文章,你可以就从本文开始。

Web.config

Web.config是一个配置文件,所有ASP.NET的应用程序一般都会把这个文件放在其根目录下,它包含有<authentication>和<authorization>这两个区段。<authentication>区段里包含了ASP.NET如何辨别访问者谁是谁的细节,而<authorization>区段会指出哪个通过验证的用户能够访问目录下的.aspx文件。

Listing A里的Web.config文件和我们上次用到的是一样的,只有一个很大的不同之处(我们马上就会讲到这一点)。<authentication>元素会指出ASP.NET应该使用验证的Forms方法,这和所集成的Windows验证以及微软的Passport验证是相对的。<forms>元素会接着给出更多的细节,用来确定ASP.NET应该使用表单认证,并指出登录页面放在哪里。在前一篇文章里,我们还使用了<credentials>元素,所以我们能够把用户名和密码就保存在Web.config文件里。这一次,我们把<credentials>区段留在那里作为参考,但是把它包括在XML注释标签里,所以它就不会被ASP.NET使用。这就是那个很大的不同。

最后,带有<deny users="?"/>子元素的<authorization>元素会指出,匿名用户不被允许看到.aspx页面。每个人都会被强制进行验证,这就意味着在每次会话中,它们至少会被送到登录页面一次。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134