Я в процессе создания нового приложения и начал использовать EF6-rc1, Microsoft.AspNet.Identity.Core 1.0.0-rc1, Microsoft.AspNet.Identity.EntityFramework 1.0.0-rc1, Microsoft.AspNet.Identity .Owin 1.0.0-rc1 и т. Д., И с выпусками RTM вчера, я обновил их через NuGet сегодня вечером до RTM.
За исключением пары изменений кода в работе, которую я проделал, все, казалось, шло хорошо, пока я не попытался создать локальную учетную запись пользователя для приложения.
Я работал над адресами электронной почты, являющимися форматом имени пользователя, который с кандидатом на выпуск отлично работал, но теперь при создании пользователя с адресом электронной почты для имени пользователя возникает следующая ошибка проверки:
Имя пользователя xxxxx@xxxx.com недействительно, может содержать только буквы или цифры.
Я потратил последний час или около того на поиск решения или документации по параметрам конфигурации для него, но безрезультатно.
Есть ли способ настроить его, чтобы разрешить адреса электронной почты для имен пользователей?
источник
((UserValidator<ApplicationUser>) UserManager.UserValidator).AllowOnlyAlphanumericUserNames = false;
Ответы:
Вы можете разрешить это, подключив свой собственный UserValidator к UserManager или просто отключив его в реализации по умолчанию:
источник
public AccountController(UserManager<ApplicationUser> userManager)
конструкторе добавьтеUserManager.UserValidator = new UserValidator<ApplicationUser>(UserManager) { AllowOnlyAlphanumericUserNames = false };
Версия C # этого (в App_Code \ IdentityModels.cs)
источник
В моем случае при работе в VS 2013 C #, MVC 5.2.2 с использованием ASP.NET Identity 2.0 решение заключалось в обновлении конструктора ApplicationUserManager внутри App_Start \ IdentityConfig.cs следующим образом:
источник
У меня была такая же проблема, когда я попытался изменить код, чтобы имя пользователя было настоящим именем человека, а не адресом электронной почты, система показала мне то же сообщение об ошибке «Имя пользователя ABC DEF недействительно, может содержать только буквы или цифры. «. Я решил проблему, добавив пробел (в моем случае в конце) в AllowedUserNameCharacters.
Я использую Asp.Net Core 2.2 и VS2017
Это мой код
Перейдите в Startup.cs и отредактируйте или добавьте строку в разделе «// пользовательские настройки»:
источник
Если вы используете веб-формы ASP.Net и пытаетесь этого добиться, просто откройте файл IdentityModels.vb / cs и в UserManager Public Class сделайте так:
источник
Для пользователей AspNet.Identity.Core 2.1 и выше эти валидаторы в UserManager доступны только для чтения. Адреса электронной почты в качестве имен пользователей разрешены по умолчанию, но если вам нужна дополнительная настройка символов в именах пользователей, вы можете сделать это в Startup.cs следующим образом:
(Мне нужен был '/' по устаревшим причинам.)
источник
Поскольку кодирование моего собственного класса ApplicationUserManager: UserManager не сработало для меня (возможно, я использую Razor Pages, а не MVC), вот еще одно решение: в Startup.cs в CofigureServices () вы можете настроить параметры идентификации, например:
Подробнее по этой теме в документации Microsoft: https://docs.microsoft.com/de-de/aspnet/core/security/authentication/identity-configuration?view=aspnetcore-2.2
источник
Если вы не можете найти IdentityConfig.cs, замените конструктор AccountController этим кодом.
источник
В моем случае у меня был класс репозитория, работающий с аутентификацией, который не позволял мне использовать "-" внутри имен пользователей. Исправление было внутри конструктора здесь:
источник
Я также застрял в этом, потому что в наши дни в большинстве случаев имена пользователей представляют собой электронные письма, хотя я могу понять причину отдельного поля электронной почты. Это чисто мои мысли / опыт, поскольку я также не мог найти мнения Microsoft по этому поводу.
Помните, что Asp Identity предназначена исключительно для того, чтобы идентифицировать кого-то, вам не нужно иметь электронную почту для идентификации, но они позволяют нам хранить ее, потому что она является частью личности. Когда вы создаете новый веб-проект в Visual Studio, вам предоставляется возможность выбора параметров аутентификации.
Если вы выберете непустой тип проекта, такой как MVC, и установите для аутентификации значение «Индивидуальные учетные записи», то вам будут предоставлены базовые основы для управления пользователями. Один из них включает в себя подобный подкласс в App_Start \ IdentityConfig.cs:
Это говорит нам о том, что Microsoft намеревается хранить более сложные имена пользователей (см. AllowOnlyAlphaNumericUserNames = false), поэтому на самом деле у нас смешанные сигналы.
Тот факт, что это сгенерировано из веб-проекта по умолчанию, дает нам хорошее указание / направление от Microsoft (и чистый способ), позволяющий нам вводить электронную почту в поле имени пользователя. Это чисто, потому что статический метод создания используется в App_Start \ Startup.Auth.cs при загрузке приложения с контекстом Microsoft.OWIN.
Единственным недостатком этого подхода является то, что вы в конечном итоге сохраняете электронную почту дважды ... Что нехорошо!
источник
Как вы, вероятно, узнали (и этого следовало ожидать), ASP.NET Identity 2.0.0, выпущенный в марте 2014 года, добавляет эту функциональность в структуру.
Объявление: http://blogs.msdn.com/b/webdev/archive/2014/03/20/test-announcing-rtm-of-asp-net-identity-2-0-0.aspx
Полный пример и руководство, включая подтверждение учетной записи: http://www.asp.net/identity/overview/features-api/account-confirmation-and-password-recovery-with-aspnet-identity
источник
Если вы используете какой-либо IOC (я использую StructureMap) в контроллере вашей учетной записи, вам нужно будет применить исправление, упомянутое выше Хао Кунгом, когда Usermanager передается: (мне пришлось). Возможно, есть способ сделать это в настройке IOC, но я не знаю, как это сделать.
источник
Я столкнулся с той же проблемой. но, наконец, я решил проблему, добавив в свой метод нижеследующую часть, а не конструктор.
источник