GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Erro IUserTokenProvider do Identity

#1

Estou com um erro no código que fiz para o link Esqueci minha senha. Se alguém puder me ajudar. Veja:

[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

0 Likes

#2

Em Java eu fiz da seguinte forma e deu certo

–> Buscar

Bloco de citação
try {
conecta.executaSQL(“select * from usuario_licipa where email_usu=’”+JTFEmail.getText()+"’");
conecta.rs.first();
if(conecta.rs.getString(“cpf_usu”).equals(JTFCPF.getText())){
JTFSenhaExibir.setText(conecta.rs.getString(“senha_usu”));
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, “Erro ao mostrar senha!\n Erro:” + ex);
}

}

–>Alterar a Senha

Bloco de citação

    //conecta.executaSQL("alter from usuario_licipa where sigla_estado="+JTFNewSenha.getText());
    
    try {
        
        PreparedStatement pst = conecta.conn.prepareStatement("update usuario_licipa set senha_usu = ? where cpf_usu = ?");
        pst.setString(1, JTFNewSenha.getText());
        pst.setString(2, JTFCPF.getText());
        pst.execute();
        JOptionPane.showMessageDialog(rootPane, "Senha alterada com sucesso!");
    }catch (SQLException ex){
        JOptionPane.showMessageDialog(null, "Eerro ao alterar senha!\n Erro:" + ex);
    }
0 Likes

#3

Boa tarde Ian.
Agradeço a ajuda, mas neste caso preciso fazer a alteração pelo Identity.

Obrigada.
Flávia

1 Like