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);