要突破这些局限,我们就应该停止使用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页面。每个人都会被强制进行验证,这就意味着在每次会话中,它们至少会被送到登录页面一次。