Пользовательский менеджер .NET Core не работает с CreateAsync при апострофе

Кажется, мне не удается выполнить вызов 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();

Нужно ли мне что-то добавить в эту конфигурацию, чтобы разрешить использование апострофа?

мне интересно, является ли bob.o'[email protected] действительным адресом электронной почты? «Кажется, у меня не получается CreateAsync» — выдает ли он исключения? добавлен ли пользователь в таблицу в базе данных?

Bagus Tesa 26.06.2024 02:29

Это действительный адрес электронной почты от клиента Office 365. Он не добавляется в таблицу идентификационной базы данных при просмотре сервера sql. Я добавил немного журналирования, так что, надеюсь, завтра смогу увидеть фактическое исключение.

Bryan Dellinger 26.06.2024 02:51

спасибо, я узнал кое-что новое о том, что электронная почта действительна и разрешена стеком проверки модели .net. Я думал, что его тоже молча удалили из-за неправильного адреса электронной почты, но, похоже, дело в чем-то другом - может быть, в базе данных?

Bagus Tesa 26.06.2024 05:30
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Да, вам нужно добавить следующий код, чтобы разрешить апостроф.

opt.User.AllowedUserNameCharacters = "abcd....zABCDE...Z0123456789-._@+'";

ASP.NET Core Identity использует UserValidator<TUser> для проверки имен пользователей и по умолчанию запрещает использование специальных символов.

Обязательно проверяйте вводимые пользователем данные, чтобы предотвратить риски безопасности, такие как SQL-инъекция и XSS-атаки при принятии специальных символов в именах пользователей.

Другие вопросы по теме