当我想在vb.net或c#中使用ResetPassword
方法时,它无法重置密码并生成一个说明:“提供的密码答案错误”。
我认为它是由哈希系统和哈希和盐的机器代码引起的。
我该如何解决这个问题?
答案 0 :(得分:2)
将以下属性添加到Web.Config文件中的成员资格cofig部分。
requiresQuestionAndAnswer="false"
完整示例
<configuration>
<connectionStrings>
<add name="SqlServices"
connectionString="Data Source=MySqlServer;Integrated Security=SSPI;Initial
Catalog=aspnetdb;" />
</connectionStrings>
<system.web>
<membership
defaultProvider="SqlProvider"
userIsOnlineTimeWindow="20">
<providers>
<remove name="AspNetSqlProvider" />
<add name="SqlProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="SqlServices"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
passwordFormat="Hashed"
applicationName="/" />
</providers>
</membership>
</system.web>
</configuration>
答案 1 :(得分:0)
我以错误的方式使用它,并得到了相同的错误,希望对您也有帮助。这是我的代码:
MembershipUser mu = Membership.GetUser(c.Username);
if (mu.PasswordQuestion == c.Question)
{
string pwd = mu.ResetPassword(c.Answer);
mu.ChangePassword(pwd, c.Password);
return RedirectToAction("SignIn");
}
else
{
ViewBag.Message = "Error!";
return View();
}