抢先试用ASP.NET 2.0中的新型安全控件(4)
发表于:2007-06-30来源:作者:点击数:
标签:
六、 会员供给者模型工作原理 ASP .net 2.0使用一种新型的 安全 模型,称为会员供给者模型。这个模型通过使 开发 者能够选择添加安全特性到他们的应用程序的方式来允许最大程度的灵活性和扩展性。 作为这个供给者模型扩展性的一个实例,请考虑一下新的安全(
六、 会员供给者模型工作原理
ASP
.net 2.0使用一种新型的
安全模型,称为会员供给者模型。这个模型通过使
开发者能够选择添加安全特性到他们的应用程序的方式来允许最大程度的灵活性和扩展性。
作为这个供给者模型扩展性的一个实例,请考虑一下新的安全(登录)控件-你已在本文中看到过。这些控件、API以及构成该新模型的供给者显示于下图中。
图会员供给者模型:该图显示了本文所讨论的控件和会员供给者模型的各个层之间的关系。
在最顶层上是各种的Web
服务器控件,例如Login、LoginStatus和LoginView控件。在该控件下面是API-它们执行要求其完成的任务。Membership类负责处理如添加和删除用户等的任务,而MembershipUser类负责管理用户的信息如口令、口令问题,等等。这些会员API使用会员供给者来保存或进行持续性存储。Visual Studio 2005与一个缺省的会员供给者一同发行-
SQL Server 2005 Express Membership Provider。会员供给者的角色是充当会员API和数据存储之间的桥梁,以便信息能够被持续性存储而不需要开发者编写低层代码来存取数据。
如果微软提供的供给者不能满足你的需要,你或者可以扩展它们或者编写你自己的。例如,如果你想要用一个XML文档而不是一个关系
数据库(例如
SQLServer)来保存你的站点的会员信息,你可以编写你自己的供给者来实现与XML文件的对话。
七、 恢复丢失的口令
恢复/清除丢失的口令是你-作为一个管理员需要执行的一项普通任务。PasswordRecovery控件允许用户自己执行这项普通任务-通过自动地检索口令然后用电子邮件把它发送给用户。
仅在你以普通文本存储口令而不是对口令的散列值进行存储时,口令恢复才是重要的。然而,默认情况下,在machine.config文件中的设置指定所有的口令,在把它们存储到成员数据库之前,要被散列化处理。Machine.config默认情况下也不允许口令恢复。
为了在普通文本中存储用户口令,你可以在文件Web.config中添加下列入口:
...
<system.web>
<membership
defaultProvider="SqlProvider"
userIsOnlineTimeWindow="15">
<providers>
<clear />
<add
name="SqlProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="LocalSqlServer"
applicationName="SecurityControls"
enablePasswordRetrieval="true"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
requiresUniqueEmail="true"
passwordFormat="Clear" />
</providers>
</membership>
...
具体地说,你现在清除了所有的会员供给者,然后添加一个新的SqlMembershipProvider。注意,为了允许口令检索,你需要设置enablePasswordRetrieval(为真)和passwordFormat(清除之)属性。
如果你设置了passwordFormat为散列化的,那么你必须把enablePasswordReset设置成假。
现在拖动PasswordRecovery控件到Default.aspx,然后应用彩色模式。该PasswordRecovery控件现在看起来象图17。
图17.PasswordRecovery控件。通过使用这个控件,用户能够恢复他们忘记的口令。
在PasswordRecovery控件的属性窗口中,设置MailDefinition属性下的"From"和"Subject"字段,如图18所示。
图18.PasswordRecovery控件属性:如何在属性浏览器中,配置你的PasswordRecovery控件
另外,你需要在你的机器上配置好SMTP服务,以便用PasswordRecovery控件来发送一电子邮件。为在你的机器上配置该SMTP服务,启动WAT,选择应用程序,然后选择配置SMTP电子邮件设置。
为
测试应用程序,按下F5键。你将被提示输入你的用户名,然后是你的安全问题。如果该安全问题的答案是正确的,那么口令将被以电子邮件形式发送给你;否则,在该页面将显示给你一错误消息,如图19所示。
图19.恢复一丢失的口令:用户在恢复一个丢失的口令的过程中,会看到这个屏幕序列
为了安全原因,通过电子邮件发送口令给用户不是一个好注意。因此,你确实需要小心地考虑使用这一选择。
原文转自:http://www.ltesting.net