Asp.net Core Get User по Id пользователя

использование Asp.net Core Identity и Entity framework core, как я могу получить asp.net объект пользователя по свойству UserId? Я знаю, что можно получить текущего зарегистрированного пользователя из HttpContext.Объект пользователя с помощью:

UserManager.GetUserAsync(HttpContext.User)

однако, когда администратор вошел в систему, я хочу, чтобы они могли получить доступ/изменить данные любого пользователя, чтобы обновить электронные письма пользователя и номера телефонов, которые по умолчанию являются частью asp.net объект пользователя.

В идеале я хотел бы иметь возможность сделать что-то вроде:

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() метод в настоящее время не существует.

2 ответов


можно использовать FindByIdAsync для этого:

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

вы можете получить текущего пользователя одним из следующих способов:

// Get the current user ID from the user claims (no DB hit)    
int currentUserId = int.Parse(User.FindFirst(Claims.UserId).Value);

а затем получить текущий объект пользователя:

// Either via DB context:
var currentUser = _context.Users.FirstOrDefault(u => u.Id == currentUserId);

// or via Usermanager:
var sameUser = UserManager.Users.FirstOrDefault(u => u.Id == currentUserId);

или так:

var currentUser = UserManager.Users.FirstOrDefault(u => u.UserName == User.Identity.Name);