Как не использовать контрольный вопрос и ответ для членства в ASP.Net для индивидуального восстановления пароля?

Я не хочу иметь функцию контрольных вопросов и ответов, предоставляемую поставщиком членства в ASP.Net, но я ДЕЙСТВИТЕЛЬНО хочу включить страницу утерянного / забытого пароля.

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

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

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

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

Заранее благодарим за любую предоставленную помощь. -Ниссан


person Nissan    schedule 28.05.2009    source источник


Ответы (2)


В итоге я сделал следующее

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);

    }
person Nissan    schedule 28.05.2009

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

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

in

<membership>
   <providers>
      <clear/>
      <add name="AspNetSqlMembershipProvider" ...
      ..........
person Eduardo Molteni    schedule 28.05.2009
comment
Этот шаг был частью опубликованного мной решения, но не сам по себе. Изменение web.config по-прежнему оставило бы меня без метода изменения пароля, передав его и только имя пользователя методу членства. Решение, которое я опубликовал, дало это решение. Тем не менее, спасибо за ваш вклад. - person Nissan; 01.06.2009