asp.net MVC密码恢复工具无法正常工作

时间:2010-06-30 23:04:19

标签: mysql asp.net-membership password-recovery

我在ASP.NET MVC 2 Web应用程序中使用密码恢复控件。当我单击没有用户名的提交按钮时,它表示缺少带有星号的用户名。如果我输入一个用户名,表单提交但没有任何反应。我在这里错过了什么吗?

的Web.config:

<system.net>
  <mailSettings>
    <smtp deliveryMethod="Network" from="yyy@zzz.com">
      <network host="mail.zzz.com" userName="yyy@zzz.com" 
        password="xxxxx" enableSsl="false" />               
    </smtp>
  </mailSettings>
</system.net>   

machine.config中

<membership defaultProvider="MySQLMembershipProvider">
<providers>
<add name="MySQLMembershipProvider" 
type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web, Version=6.3.2.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" 
autogenerateschema="true"
connectionStringName="LocalMySqlServer" 
enablePasswordRetrieval="false" 
enablePasswordReset="true" 
requiresQuestionAndAnswer="false" 
applicationName="/" 
requiresUniqueEmail="true" 
passwordFormat="Hashed" 
maxInvalidPasswordAttempts="5" 
minRequiredPasswordLength="6" 
minRequiredNonalphanumericCharacters="1" 
passwordAttemptWindow="10" 
passwordStrengthRegularExpression="" />
</providers>
</membership>

1 个答案:

答案 0 :(得分:0)

根据您的配置,您使用的是散列密码并禁用了密码检索。这意味着您无法恢复密码(因为它们是经过哈希处理的)。你只能重置它们。

这是一种安全设置,因此请勿进行更改。但请注意,当密码被散列时,您无法“恢复”密码。

如果您的要求指定密码必须是可恢复的,那么您必须将passwordFormat更改为Encrypted并设置enablePasswordRetrieval =“true”。但是要知道,数据库中的任何散列密码和密码答案都需要由用户重新输入,因为就提供商而言,当前值将“损坏”。要强制执行此更改,您可以覆盖登录页面中的Authenticate方法并检查用户的LastPasswordChange日期,然后将其重定向到页面以重新配置其密码并回答,以便他们可以正确登录。

最后要提到的一点是,加密密码是可检索的,因为它们可以被解密。这意味着它们不太安全。如果可以,请坚持使用散列密码。