简介
asp开发人员总是自己解决认证问题,但asp.net已经支持内置的认证功能。在本篇文章中,我们将介绍如何这二者在认证方面有什么变化,如何用很少的代码使用formsauthentication使用网站更安全。
在asp编程中,无论是使用集成的安全协议(例如windows nt lan manager [ntlm]的寻问/应答认证协议),基本的安全协议(指纯文本)还是自己创建的安全协议,其工作量都是十分惊人的。表格认证使开发人员能够在web.config文件中存储用户名、口令等认证信息,当然,也可以使用你自己原来的方法,例如数据库、xml文件或文本文件。使用表格认证最大的好处是它可以使我们无需再通过编程实现状态跟踪,这一部分工作由asp.net代劳了。
表格认证使用cookies使应用程序在用户访问期间对用户进行跟踪,asp.net处理表格认证的方法与在asp中使用的方式非常相似。当用户通过表格认证登录后,就会创建一个用来跟踪用户访问网站期间活动的cookie。如果用户请求一个安全的网页,但又没有登录,用户就会被引导到登录网页。一旦用户通过认证,就会被引导到原来请求的页面。
web.config文件包含asp.net应用程序的所有配置设置,其理念是让许多开发人员共同控制web应用程序,而不是由系统管理员一个人来控制。当然了,web.config中有很多的选项,但今天我们只介绍与表格认证有关的选项。
在上面的web.config中,我们配置了几个选项。
配置小节的mode属性设置表格的认证模式,在
需要记住的是,如果在计算机上有多个应用,建议为每个cookie命名一个名字。
接下来,我们将path属性设置为应用的根目录,将loginurl属性设置为本地机上一个名字为loginurl.aspx的网页,当然我们也可以使用https://secured.sumnurv.com这样的url,将protection属性设置为建议的“all”,这意味着cookie不但会被加密,还会被确认有效。
确认算法来自machine.config中的machinekey元素,数据确认有助于确保cookie的数据在传输的过程中不会被篡改。
timeout属性指的是一个cookie终止、用户再次登录之前的以分钟计的时间。在credentials小节中,我们添加二个用户以及它们的口令,formsauthentication将使用它们对用户进行认证。
在authorization小节中,我们希望没有非授权的用户能够访问应用。“?”表示匿名用户,因此我们对所有的匿名用户设置一个deny标志。
所有用户的认证逻辑都在这里完成。如果想根据web.config、xml或文本文件、数据库验证用户的证书,那么验证工作就是在这里完成的。下面的例子根据web.config验证用户的证书。
由于还需要进行认证,因此在上面的代码中引用了system.web.security名字空间,formsauthentication是system.web.security名字空间中的一个类。在本例中,我们使用了一个带有分别用来输入用户名、口令的文本框、口令输入字段,还有一个复选框,方便用户使用一个永久性的cookie集。“submit”(提交)按钮有一个onclick事件,它执行一个名为processlogin的子程序。在processlogin内部,我们执行了formsauthentication类的authenticate方法,用户名和口令是其二个参数。这一方法根据用户名和参数检查web.config文件中信任状的标记。如果它们相符,我们执行redirectfromloginpage方法,该方法会向用户的机器中写入一个cookie,对用户的行为进行跟踪,并确保用户是经过认证的;如果不相符,就会发生错误,并通知用户。
这是用户请求或谋略访问的页。在本例中,我们将显示被认证用户和认证类型。
default.aspx code
新闻热点
疑难解答
图片精选