Страницы

Поиск по вопросам

понедельник, 8 июля 2019 г.

Как убрать валидацию имени пользователя ASP.NET MVC CORE?

Пытаюсь изменить пароль пользователя таким способом:
await _userManager.ResetPasswordAsync(user, code, editViewModel.Password);
user - объект ApplicationUser, code - код сброса пароля, сгенерированный функцией _userManager.GeneratePasswordResetTokenAsync, editViewModel.Password - строка, содержащая новый пароль.
При попытке изменить пароль результатом возвращается ошибка User name 'Дмитрий' is invalid, can only contain letters or digits. (Дмитрий - имя пользователя). Как отменить валидацию имени пользователя при изменении пароля?


Ответ

Допустимые символы в имени пользователя задаются в UserOptions.AllowedUserNameCharacters. Вот значение по умолчанию:
///

/// Gets or sets the list of allowed characters in the username used to validate user names. /// /// /// The list of allowed characters in the username used to validate user names. /// public string AllowedUserNameCharacters { get; set; } = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+";
Судя по коду, проверку можно отключить, сбросив эту строку на пустую или на null
else if (!string.IsNullOrEmpty(manager.Options.User.AllowedUserNameCharacters) && userName.Any(c => !manager.Options.User.AllowedUserNameCharacters.Contains(c))) { errors.Add(Describer.InvalidUserName(userName)); }
Обнулить эту настройку можно в методе ConfigureServices
services.AddIdentity(opts => { opts.User.AllowedUserNameCharacters = null; }

Комментариев нет:

Отправить комментарий