Recuperar / Redefinir opções de senha perdida por email

Eu estou trabalhando em um projeto c # asp.vmv 4 fazendo uso do DefaultMembershipProvider e estou tentando chegar a uma maneira amigável para recuperar / redefinir uma senha perdida.

Minha primeira tentativa foi fazer com que o usuário fornecesse seu nome de usuário (que é um endereço de e-mail válido); o aplicativo geraria uma senha aleatória (atendendo aos nossos requisitos), que a senha seria enviada ao usuário por e-mail.

Minha solução ideal seria que, quando um usuário clicasse no botão "Esqueci minha senha". Eles são solicitados a fornecer seu nome de usuário que, quando fornecido, faria com que um e-mail fosse enviado com um URL (esse URL também terá uma data de expiração anexada a ele). Essa solução também redefine a senha do usuário dentro do aplicativo (antes de enviar o email). Quando o usuário clica no URL, ele é automaticamente conectado e enviado para o formulário de alteração de senha. Existem problemas com esta solução?

Para configuração, tenho os seguintes valores configurados:

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

questionAnswers(2)

yourAnswerToTheQuestion