Como não usar ASP.Net Membership Segurança Pergunta e resposta para recuperação de senha personalizada?
-
06-09-2019 - |
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
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" ...
..........