Спасибо всем участникам, но я думаю, что этот вопрос заслуживает более точного ответа.
Шаблоны по умолчанию для ASP.NET Core Identity всегда будут создавать пользователей с электронной почтой и именем пользователя, содержащими одно и то же значение.Затем обработчик входа по умолчанию (либо в AccountController.Login
, либо в методе OnPostAsync
представления «Вход в систему») всегда использует поле «email» в качестве имени пользователя и вызывает PasswordSignInAsync
.Хотя код, кажется, подразумевает, что он поддерживает электронную почту, этот метод действительно принимает только имя пользователя.Чтобы добавить в заблуждение, представление делает проверку того, что вы ввели действительный адрес электронной почты, но то, что вы вводите, в конечном итоге будет найдено в поле NormalizedUserName
!
Таким образом, если вы также хотите разрешить электронную почтуКак заявили Марк и Разван, вы можете использовать _userManager.FindByEmailAsync
, чтобы получить действительное имя пользователя, пытающегося войти в систему, а затем вызвать PasswordSignInAsync
с именем пользователя.
Как , заявленное Барри Доррансом: «Нет, вы правы. Шаблоны заканчиваются тем, что имя пользователя и адрес электронной почты совпадают при регистрации, но не в состоянии синхронизировать их. В 2.2 запланирована работа по устранению этого уродливого беспорядка».
открытый номер здесь .