Поэтому мне нужно импортировать кучу пользователей в мою систему на основе ASP.NET Identity, а некоторые из его паролей очень короткие (всего три символа) и вне моего контроля. Мне нужно импортировать эти пароли, чтобы существующие пользователи могли входить в систему и изменять свои пароли, чтобы соответствовать более жестким требованиям.Требования к паролю для удостоверения личности ASP.NET, переопределяющие мои собственные
Я думал, что, сконфигурировав свойство PasswordValidator
в своем классе ApplicationUserManager
, я мог бы установить требования к импортированному паролю на низкий номер, что позволило мне импортировать существующего пользователя.
// Configure validation logic for passwords
appUserManager.PasswordValidator = new PasswordValidator
{
RequiredLength = 3,
RequireNonLetterOrDigit = false,
RequireDigit = false,
RequireLowercase = false,
RequireUppercase = false,
};
Однако, когда я импортировать пользователей и попытаться создать новую запись, я получаю сообщение об ошибке проверки в IdentityResult
.
IdentityResult result = manager.Create(newUser, importedUser.Password);
result.Errors = "Passwords must be at least 6 characters."
Это не возможно отменить требования к идентификации по умолчанию?
Вот весь класс ApplicationUserManager для справки:
public class ApplicationUserManager : UserManager<ApplicationUser>
{
public ApplicationUserManager(IUserStore<ApplicationUser> store)
: base(store)
{
PasswordValidator = new MinimumLengthValidator(3);
}
public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context)
{
var appDbContext = context.Get<ApplicationDbContext>();
var appUserManager = new ApplicationUserManager(new UserStore<ApplicationUser>(appDbContext));
// Configure validation logic for usernames
appUserManager.UserValidator = new UserValidator<ApplicationUser>(appUserManager)
{
AllowOnlyAlphanumericUserNames = true,
RequireUniqueEmail = false
};
// Configure validation logic for passwords
appUserManager.PasswordValidator = new PasswordValidator
{
RequiredLength = 3,
RequireNonLetterOrDigit = false,
RequireDigit = false,
RequireLowercase = false,
RequireUppercase = false,
};
appUserManager.EmailService = new Services.EmailService();
var dataProtectionProvider = options.DataProtectionProvider;
if (dataProtectionProvider != null)
{
appUserManager.UserTokenProvider = new DataProtectorTokenProvider<ApplicationUser>(dataProtectionProvider.Create("ASP.NET Identity"))
{
//Code for email confirmation and reset password life time
TokenLifespan = TimeSpan.FromHours(6)
};
}
return appUserManager;
}
}
Я искал свой проект для текста ошибки 'Пароли должны быть не менее X символов' и не могли найти его вообще. Это заставляет меня думать, что это встроенное требование к структуре Identity. – webworm
Можете ли вы показать код до 'IdentityResult result = manager.Create (newUser, importedUser.Password);'? Как вы получили объект 'manager'? – tmg