Благодарю. Я думаю, что это будет работать. Кроме того, вы убедили меня в том, что пользователи явно сбрасывают свой пароль. Кроме того, мы можем повысить требования к более надежному паролю.

строили Asp.Net Core для использования нашей таблицы студентов, а не таблицы AspNetUser. Все отлично работает для новых студентов. Но нам нужно обновить пароли существующих студентов. Я хотел бы сделать что-то вроде этого (вAccountController Login метод), когда студент входит в систему или это может быть сделано единовременно ...

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null)
{
    ViewData["ReturnUrl"] = returnUrl;
    if (ModelState.IsValid)
    {
        // Require the user to have a confirmed email before they can log on.
        var user = await _userManager.FindByEmailAsync(model.Email);
        if (user != null)
        {
            if (user.PasswordHash == null)
            {
                user.EmailConfirmed = true;
                user.UserName = model.Email;
                user.NormalizedEmail = model.Email.ToUpper();
                user.NormalizedUserName = user.NormalizedEmail;
                //user.PasswordHash = ?;
                //user.SecurityStamp = ?;
                //update user in database.
            }
            //continue on with login process
        }
    }
}

Код ниже (изRegister метод) создает нового пользователя и добавляет его в базу данных. Это не то, что мы хотим.

var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
var result = await _userManager.CreateAsync(user, model.Password);
if (result.Succeeded)
    // …

Ответы на вопрос(1)

Ваш ответ на вопрос