Recuperar / Restablecer las opciones de contraseña perdida por correo electrónico

Estoy trabajando en un proyecto de C # ASP.MVC 4 haciendo uso del DefaultMembershipProvider y estoy tratando de encontrar una forma fácil de usar para recuperar / restablecer una contraseña perdida.

Mi primer intento fue hacer que el usuario proporcione su nombre de usuario (que es una dirección de correo electrónico válida), la aplicación generaría una contraseña aleatoria (que cumple con nuestros requisitos), la contraseña se envía por correo electrónico al usuario.

Mi solución ideal sería que cuando un usuario haga clic en el botón Olvidé mi contraseña. Se les solicita su nombre de usuario que, cuando se proporcione, provocará que un correo electrónico se envíe con una URL (esta URL también tendrá una fecha de caducidad adjunta). Esta solución también restablece la contraseña del usuario dentro de la aplicación (antes de enviar el correo electrónico). Cuando el usuario hace clic en la URL, se registra automáticamente y se envía al formulario de cambio de contraseña. ¿Hay problemas con esta solución?

Para la configuración tengo los siguientes valores establecidos:

<membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <clear />
    <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" 
         enablePasswordRetrieval="false" 
         enablePasswordReset="true" 
         requiresQuestionAndAnswer="false" 
         requiresUniqueEmail="false" 
         maxInvalidPasswordAttempts="5" 
         minRequiredPasswordLength="6" 
         minRequiredNonalphanumericCharacters="0" 
         passwordAttemptWindow="10" 
         applicationName="/" />
  </providers>
</membership>

Respuestas a la pregunta(2)

Su respuesta a la pregunta