Bom dia. Não sei porque motivo minha dúvida foi marcada como solucionada, mas ainda não cheguei na solução.
Estou abrindo novamente, para que alguém possa me ajudar. O Marcelo estava me ajudando, mas ainda não consegui êxito. Tenho o seguinte código de Esqueci minha Senha:
[HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task EsqueciSenha(EsqueciSenhaViewModel modelo) { if (!ModelState.IsValid) { return View(modelo); }
var provider = new DpapiDataProtectionProvider("ASP.NET Identity");
UserManager.UserTokenProvider = new DataProtectorTokenProvider<Usuario, string>(
provider.Create("UserToken"));
var usuario = await UserManager.FindByEmailAsync(modelo.Email);
if (usuario == null || !(await UserManager.IsEmailConfirmedAsync(usuario.Id)))
{
return View("ConfirmacaoEsqueciSenha");
}
var token = await UserManager.GeneratePasswordResetTokenAsync(usuario.Id);
var callbackUrl = Url.Action("ConfirmacaoEsqueciSenha", "Autenticacao", new { UsuarioId = usuario.Id, Token = token }, protocol: Request.Url.Scheme);
var enviarEmail = EmailEsqueciSenhaController.EnviarEmail(usuario, "Por favor redefina sua senha clicando aqui: <a href=\"" + callbackUrl + "\">Redefinir sua senha!</a>", "Alteração de senha");
return View("EmailEsqueciSenhaEnviado");
}
No código acima está tudo ok, recebo o usuario e o token na URL e recebo um e-mail com link para confirmar a alteração, ao clicar neste link sou redirecionada para o código abaixo:
[HttpPost] public async Task ConfirmacaoEsqueciSenha(ConfirmacaoEsqueciSenhaViewModel modelo) { if (ModelState.IsValid) { // Verifica o Token recebido // Verifica o ID do usuário // Mudar a senha var resultadoAlteracao = await UserManager.ResetPasswordAsync( modelo.UsuarioId, modelo.Token, modelo.NovaSenha);
if (resultadoAlteracao.Succeeded)
{
return RedirectToAction("Index", "Home");
}
AddErrors(resultadoAlteracao);
}
return View();
} Neste código que ocorre o erro. Segue abaixo o erro que ocorre:
No IUserTokenProvider is registered. Descrição: Ocorreu uma exceção sem tratamento durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código.
Detalhes da Exceção: System.NotSupportedException: No IUserTokenProvider is registered.
Erro de Origem:
Linha 353: // Verifica o ID do usuário Linha 354: // Mudar a senha Linha 355: var resultadoAlteracao = Linha 356: await UserManager.ResetPasswordAsync( Linha 357: modelo.UsuarioId,
É como se o usuário não estivesse registrado. Sabem o que pode ser?
Obrigada. Flávia Lares