2010-10-23 127 views
0

我已经在web.config文件的成员资格部分设置了minRequiredPasswordLength,minRequiredNonalphanumericCharacters。但我需要最大密码长度也设置。如何在web.config文件中设置?如何在web.config文件中设置最大密码长度?

+0

你打算使用ASP.NET登录控件(http://msdn.microsoft.com/en-us/library/tz6e5ezc.aspx)要创建界面,还是计划基于标准控件构建自定义界面,以执行注册/登录/密码恢复等操作? – 2010-10-23 09:52:57

+0

雅即时使用ASP.NET登录控件... – Abilash 2010-10-23 09:59:41

+0

请参阅http://www.codeproject.com/KB/aspnet/Password_Recovery.aspx?fid=343748&df=90&mpp=10&noise=5&sort=Position&view=None&fr=11自定义恢复控制的示例。 – 2010-10-26 20:21:04

回答

1

我认为MembershipProvider的默认实现不支持此功能。但是,通过在用户设置/更改密码时验证密码长度,您可以获得相同的结果。

如果您使用的是标准的实施与PasswordRecovery控件您无法用新密码的产生干扰MembershipProvider类的相关PasswordRecovery控件

编辑(更准确地说ResetPassword - “重置用户密码到一个新的,自动生成的密码“)。 如果你想使用PasswordRecovery控件,除了创建从抽象MembershipProvider类派生的自定义成员资格提供者或者从其具体实现(如SqlMembershipProvider)之外创建自定义成员资格提供者之外,没有其他选择。

另一个选择是实现您的自定义密码恢复界面,因为您仍然可以依赖于您的MembershipProvider中实现的功能。当用户想要重置密码时,可以使用GetUser方法获取相关信息,然后使用ResetPassword获取新密码。在这一刻,您可以使用ResetPassword返回的密码并调用ChangePassword来设置符合条件的新密码,然后将其发送给用户。有很多方法可以实现相应的用户界面,但重置密码逻辑几乎相同。如果您决定保持密码加密而不是散列满足您的要求,您的问题将得到解决,因为用户将通过电子邮件接收他们的旧密码(从设置时刻开始符合最大长度条件)。为此,在web.config中进行以下更改:

 Passwordformat="encrypted" 
     Passwordreset="true" 
     Passwordretriaval="true" 
+0

我使用密码恢复控制,它会自动重置并向相应用户发送密码。用户收到的密码是最小长度,但不是最大长度。在这种情况下,我可以在哪里验证密码长度? – Abilash 2010-10-23 10:08:06