Cómo no usar ASP.Net pregunta y respuesta de seguridad de miembro para la recuperación de contraseña personalizada?

StackOverflow https://stackoverflow.com/questions/920334

Pregunta

No quiero tener la pregunta y respuesta de seguridad característica que da ASP.Net proveedor de suscripciones, pero sí quiero para permitir una página contraseña perdida / olvidada.

Esta página sería donde un usuario podría entrar en su / su dirección de correo electrónico y un correo electrónico será enviado a esa dirección si el usuario se registró para ellos para restablecer su contraseña a través de un enlace enviado a esa dirección de correo electrónico registrada

He creado la tabla personalizada para rastrear dichas solicitudes, la clave aleatoria asignado a la solicitud, así como una fecha de caducidad indicada en la solicitud. Sin embargo por escrito el código para restablecer efectivamente la contraseña, me di cuenta que no parece ser un método que hace algo como ResetPassword (correo electrónico, newpassword) sin necesidad de utilizar la seguridad Q y un poco (que no tengo).

¿Hay alguna manera de simplemente restablecer la contraseña de un usuario a través de un sistema incorporado en la función de miembro?

Si no es así, ¿cómo iba a necesitar hacer esto?

Gracias de antemano por cualquier ayuda dada. -Nissan

¿Fue útil?

Solución

Lo que terminé haciendo fue la siguiente

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

Luego añade un nuevo método para utilizar este valor para cambiar la contraseña

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

    }

Otros consejos

¿Por qué no se cambia esta opción en web.config?

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

en

<membership>
   <providers>
      <clear/>
      <add name="AspNetSqlMembershipProvider" ...
      ..........
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top