Благодарю. Я думаю, что это будет работать. Кроме того, вы убедили меня в том, что пользователи явно сбрасывают свой пароль. Кроме того, мы можем повысить требования к более надежному паролю.
строили 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)
// …