#asp.net #hash #membership #reset-password
#asp.net #хэш #членство #сброс пароля
Вопрос:
когда я хочу использовать ResetPassword
метод в vb.net или c #, он не может сбросить пароль и сделать исключение, в котором говорится: «Предоставленный ответ на пароль неверен». я думаю, что это вызвано системой хеширования и машинным кодом хэша и соли. как я могу решить эту проблему?
Ответ №1:
добавьте следующий атрибут в раздел cofig вашего членства в вашем файле Web.Config.
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. но я хочу использовать вопрос о пароле
2. задавали ли вы вопрос и ответ, когда создавали пользователя с помощью msdn.microsoft.com/en-us/library /… способ
Ответ №2:
Я использовал его неправильно и получил ту же ошибку, надеюсь, вам это тоже поможет. Это мой код:
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();
}