Кажется, мне не удается выполнить вызов CreateAsync для UserManager в моем контроллере веб-API ASP.NET Core 7.
var user = new AppUser
{
DisplayName = "Bob O'Donnell",
Email = "bob.o'[email protected]",
UserName = "bob.o'[email protected]"
};
var result = await _userManager.CreateAsync(user, registerDTO.Password);
Я предполагаю, что апостроф вызывает проблемы?
Вот где я настраиваю UserManager:
services.AddIdentityCore<AppUser>(opt =>
{
opt.Password.RequireNonAlphanumeric = false;
opt.SignIn.RequireConfirmedEmail = true;
opt.Stores.MaxLengthForKeys = 128;
}).AddRoles<IdentityRole>()
.AddEntityFrameworkStores<DataContext>()
.AddSignInManager<SignInManager<AppUser>>()
.AddDefaultTokenProviders();
Нужно ли мне что-то добавить в эту конфигурацию, чтобы разрешить использование апострофа?
Это действительный адрес электронной почты от клиента Office 365. Он не добавляется в таблицу идентификационной базы данных при просмотре сервера sql. Я добавил немного журналирования, так что, надеюсь, завтра смогу увидеть фактическое исключение.
спасибо, я узнал кое-что новое о том, что электронная почта действительна и разрешена стеком проверки модели .net. Я думал, что его тоже молча удалили из-за неправильного адреса электронной почты, но, похоже, дело в чем-то другом - может быть, в базе данных?





Да, вам нужно добавить следующий код, чтобы разрешить апостроф.
opt.User.AllowedUserNameCharacters = "abcd....zABCDE...Z0123456789-._@+'";
ASP.NET Core Identity использует UserValidator<TUser> для проверки имен пользователей и по умолчанию запрещает использование специальных символов.
Обязательно проверяйте вводимые пользователем данные, чтобы предотвратить риски безопасности, такие как SQL-инъекция и XSS-атаки при принятии специальных символов в именах пользователей.
мне интересно, является ли
bob.o'[email protected]действительным адресом электронной почты? «Кажется, у меня не получается CreateAsync» — выдает ли он исключения? добавлен ли пользователь в таблицу в базе данных?