我刚刚切换到使用Identity Framework的新2.0版本。在1.0中,我可以通过使用manager.FindByIdAsync(User.Identity.GetUserId())
来获取用户对象。在2.0中似乎不存在GetUserId()
方法。
现在,我所能想到的就是使用manager.FindByEmailAsync(User.Identity.Name)
,它引用了users表中的username字段。在我的应用程序中,它被设置为与电子邮件字段相同。
我可以看到,当有人需要更新他们的电子邮件时,这会导致问题。有没有一种方法可以基于Identity 2.0框架中不变的值(例如id字段)来获取当前登录的用户对象?
发布于 2014-03-25 14:12:50
GetUserId()
是IIdentity
上的一个扩展方法,它位于Microsoft.AspNet.Identity.IdentityExtensions
中。确保已使用using Microsoft.AspNet.Identity;
添加了名称空间。
发布于 2015-05-21 02:03:21
以防您像我一样,并且用户实体的Id字段是Int或字符串以外的其他类型,
using Microsoft.AspNet.Identity;
int userId = User.Identity.GetUserId<int>();
会起到作用的
发布于 2019-07-27 13:15:02
我也有同样的问题。我目前使用的是Asp.net Core2.2。我用下面这段代码解决了这个问题。
using Microsoft.AspNetCore.Identity;
var user = await _userManager.FindByEmailAsync(User.Identity.Name);
我希望这对某些人有用。
https://stackoverflow.com/questions/22624470
复制相似问题