Stack Overflow на русском Asked on November 27, 2021
Использую ASP.Net Identity, Asp.Net Core
Никак не могу понять, как при регистрации пользователя сразу проверить его номер телефона на использование в других учетных записях. Мне нужно, что бы не было повторных E-mail и номеров телефона.
С E-mail и UserName все работает, но отдельно проверить только телефон не получается.
Пробовал задать свойству UserName = model.PhoneNumber, но в таком случае войти в аккаунт я могу только с использованием номера телефона.
Попытки получить пользователя по Email или просто через GetUserAsync() и сравнить его номер с номером из формы также не получились 🙁
Собственно код получения и обработки данных с формы
[HttpPost]
public async Task<IActionResult> Register(RegisterViewModel model)
{
User user = new User { Email = model.Email, UserName = model.Email, PhoneNumber = model.PhoneNumber };
// добавляем пользователя
var result = await _userManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
await _signInManager.SignInAsync(user, false);
return RedirectToAction("Lk", "Account");
}
else
{
foreach (var error in result.Errors)
{
ModelState.AddModelError(string.Empty, error.Description);
}
}
return View(model);
}
Большое спасибо, tym32167
Не знаю на сколько это оптимальный вариант, но проверку на уникальности номера телефона сделал следующим образом:
User user = new User { Email = model.Email, UserName = model.Email, PhoneNumber = model.PhoneNumber };
bool IsPhoneAlreadyRegistered = await _userManager.Users.AnyAsync(item => item.PhoneNumber == model.PhoneNumber);
if (IsPhoneAlreadyRegistered)
{
// Телефон уже испольузется
}
Answered by Денис Черный on November 27, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP