我在我的项目中使用ASP.NET MVC 5与ASP.NET Identity 2.1 Alpha。

对于身份,我已经实现了用户管理器以使用GUID作为键。

我正在实施两个因素身份验证。当我尝试获取用户ID

var userId = await SignInManager.GetVerifiedUserIdAsync();
.

我收到一个错误

Invalid cast from 'System.String' to 'System.Guid'.
.

是identity alpha释放的错误,否则我错过了什么?如果我使用一个因子身份验证,都很好。用户在数据库中创建,您可以更改用户数据等。

任何建议都将得到理解。谢谢。

有帮助吗?

解决方案

我已经找到了解决方案。查看SignInManager的定义我注意到了两种方法

public virtual TKey ConvertIdFromString(string id);
public virtual string ConvertIdToString(TKey id);
.

所以我只是覆盖了我在SignInManager的实现中覆盖了这两种方法,并一切都有工作。

    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();
    }
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top