ASP.Net Identity 2.1 alfa SignInManager.GetVerifiedUserIdAsync conversão inválida
-
21-12-2019 - |
Pergunta
Estou usando ASP.Net MVC 5 com ASP.Net Identity 2.1 alfa em meu projeto.
Para identidade, implementei o User Manager para usar um Guid como chave.
Estou implementando a autenticação de dois fatores.Quando tento obter o ID do usuário
var userId = await SignInManager.GetVerifiedUserIdAsync();
Eu recebo um erro
Invalid cast from 'System.String' to 'System.Guid'.
É um bug com a versão alfa do Identity ou estou faltando alguma coisa?Se eu usar a autenticação de um fator, tudo estará bem.Os usuários são criados no banco de dados, você pode alterar os dados do usuário, etc.
Qualquer sugestão será apreciada.Obrigado.
Solução
Eu encontrei a solução.Olhando na definição de SignInManager notei dois métodos
public virtual TKey ConvertIdFromString(string id);
public virtual string ConvertIdToString(TKey id);
Então, acabei de substituir esses dois métodos na minha implementação do SignInManager e tudo funcionou.
public override Guid ConvertIdFromString(string id)
{
if (string.IsNullOrEmpty(id)) return Guid.Empty;
return new Guid(id);
}
public override string ConvertIdToString(Guid id)
{
if (id.Equals(Guid.Empty)) return string.Empty;
return id.ToString();
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow