首页 文章

获取ASP.NET Identity 2.0中的当前用户标识

提问于
浏览
72

我刚刚切换到使用Identity 2.0的新2.0版本 . 在1.0中,我可以使用 manager.FindByIdAsync(User.Identity.GetUserId()) 获取用户对象 . GetUserId() 方法似乎不存在于2.0中 .

现在我可以弄清楚的是使用 manager.FindByEmailAsync(User.Identity.Name) 引用users表中的用户名字段 . 在我的应用程序中,它设置为与电子邮件字段相同 .

当有人需要更新他们的电子邮件时,我可以看到这会导致问题 . 有没有办法根据Identity 2.0 Framework中不变的值(例如id字段)获取当前登录的用户对象?

3 回答

  • 12

    GetUserId()IIdentity 上的扩展方法,它位于 Microsoft.AspNet.Identity.IdentityExtensions 中 . 确保已使用 using Microsoft.AspNet.Identity; 添加了命名空间 .

  • 91

    为了在Asp.net Identity 2.0中获取CurrentUserId,首先导入 Microsoft.AspNet.Identity

    C#:

    using Microsoft.AspNet.Identity;
    

    VB.NET:

    Imports Microsoft.AspNet.Identity
    

    然后在任何地方调用 User.Identity.GetUserId()

    strCurrentUserId = User.Identity.GetUserId()
    

    此方法返回当前用户标识,作为数据库中userid的定义数据类型(默认为 String ) .

  • 52

    万一你和我一样,用户实体的Id字段是一个Int或除字符串以外的其他东西,

    using Microsoft.AspNet.Identity;
    
    int userId = User.Identity.GetUserId<int>();
    

    会做的

相关问题