Como não usar ASP.Net Membership Segurança Pergunta e resposta para recuperação de senha personalizada?

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

Pergunta

Eu não quero ter a pergunta de segurança e funcionalidade de resposta que ASP.Net Membership Provider dá, mas eu quero permitir que uma página de senha perdida / esquecida.

Esta página seria onde um usuário poderia entrar em sua / seu endereço de email e um e-mail será enviado para esse endereço se o usuário foi registrado por eles para redefinir sua senha através de um link enviado para o endereço de e-mail registrado

Eu criei a tabela personalizada para acompanhar esses pedidos, a chave aleatório atribuído ao pedido, bem como uma data de validade na solicitação. No entanto, por escrito, o código para realmente redefinir a senha, eu percebi que não parece ser um método que faz algo parecido ResetPassword (email, newPassword) sem a necessidade de usar o Q & A Segurança mordeu (que eu não tenho).

Existe alguma maneira de simplesmente redefinir a senha de um usuário via um construído em função de pertinência?

Se não, como é que eu preciso para obter este feito?

Agradecemos antecipadamente por qualquer ajuda dada. -Nissan

Foi útil?

Solução

O que eu acabei fazendo era o seguinte

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

então eu adicionei um novo método para usar esse valor para alterar a senha

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

    }

Outras dicas

Por que você não alterar esta opção em web.config?

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

em

<membership>
   <providers>
      <clear/>
      <add name="AspNetSqlMembershipProvider" ...
      ..........
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top