Как не использовать ASP.Net Членство безопасности вопрос и ответ для восстановления пароля? - PullRequest
2 голосов
/ 28 мая 2009

Я не хочу иметь функцию секретных вопросов и ответов, которую предоставляет поставщик членства ASP.Net, но я хочу включить страницу с потерянным / забытым паролем.

На этой странице пользователь будет вводить свой адрес электронной почты, и на этот адрес будет отправляться электронное письмо, если пользователь будет зарегистрирован для того, чтобы он сменил свой пароль по ссылке, отправленной на этот зарегистрированный адрес электронной почты

Я создал пользовательскую таблицу для отслеживания таких запросов, случайный ключ, назначенный запросу, а также дату истечения срока действия запроса. Однако, написав код для фактического сброса пароля, я понял, что не существует метода, который делает что-то вроде ResetPassword (email, newPassword) без необходимости использовать бит безопасности Q & A (которого у меня нет).

Есть ли способ просто сбросить пароль пользователя через встроенную функцию членства?

Если нет, то как мне это сделать?

Заранее спасибо за любую помощь. -Nissan

Ответы [ 2 ]

3 голосов
/ 28 мая 2009

Почему бы вам не изменить эти параметры в web.config?

         enablePasswordRetrieval="false"
         enablePasswordReset="true"
         requiresQuestionAndAnswer="false"

в

<membership>
   <providers>
      <clear/>
      <add name="AspNetSqlMembershipProvider" ...
      ..........
3 голосов
/ 28 мая 2009

Я закончил тем, что сделал

public string ResetPassword(string email)
        {
            var m_userName = Membership.GetUserNameByEmail(email);
            var m_user = Membership.GetUser(m_userName);
            return m_user.ResetPassword();
        }

затем я добавил новый метод, чтобы использовать это значение для смены пароля

public bool ChangeLostPassword(string email, string newPassword)
    {
        var resetPassword = ResetPassword(email);
        var currentUser = Membership.GetUser(Membership.GetUserNameByEmail(email), true);
        return currentUser.ChangePassword(resetPassword, newPassword);

    }
...