Asp.net Core按用户ID获取用户

问题描述:

使用Asp.net核心身份和实体框架核心,如何通过其UserId属性获取asp.net用户对象?我知道可以使用以下方法从HttpContext.User对象获取当前登录的用户:

Using Asp.net Core Identity and entity framework core, how can I get an asp.net user object by it's UserId property? I know it's possible to get the current logged in user from the HttpContext.User object using:

UserManager.GetUserAsync(HttpContext.User)

但是,当管理员登录时,我希望他们能够访问/修改任何用户的数据,以更新用户的电子邮件和电话号码,这些默认情况下是asp.net用户对象的一部分.

However when an admin is logged in, I want them to be able to access/modify any user's data in order to update user Emails and PhoneNumbers, which by default are part of the asp.net user object.

理想情况下,我希望能够执行以下操作:

Ideally I'd like to be able to do something like:

var userRecord = _userManager.GetUserById(model.userId);
//update user record
userRecord.Email = model.Email;
userRecord.PhoneNumber = model.PhoneNumber;

var newRecord = await _userManager.UpdateAsync(userRecord);

但是很明显,UserManager.GetUserById()方法当前不存在.

but obvisously, the UserManager.GetUserById() method does not currently exist.

您可以为此使用FindByIdAsync:

var user = await _userManager.FindByIdAsync(model.userId);