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.

Foi útil?

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
scroll top