По умолчанию политики паролей ASP.N Co идентичностей требуют, по крайней мере один специального символа, одну заглавной буквы, один номер, ...Как переопределить политики паролей ASP.N Co удостоверений
Как я могу изменить это ограничение?
Там нет ничего о том, что в документации (https://docs.asp.net/en/latest/security/authentication/identity.html)
Я стараюсь, чтобы переопределить Идентичность в диспетчер пользователей, но я не вижу, какой метод управляет политикой паролей.
public class ApplicationUserManager : UserManager<ApplicationUser>
{
public ApplicationUserManager(
DbContextOptions<SecurityDbContext> options,
IServiceProvider services,
IHttpContextAccessor contextAccessor,
ILogger<UserManager<ApplicationUser>> logger)
: base(
new UserStore<ApplicationUser>(new SecurityDbContext(contextAccessor)),
new CustomOptions(),
new PasswordHasher<ApplicationUser>(),
new UserValidator<ApplicationUser>[] { new UserValidator<ApplicationUser>() },
new PasswordValidator[] { new PasswordValidator() },
new UpperInvariantLookupNormalizer(),
new IdentityErrorDescriber(),
services,
logger
// , contextAccessor
)
{
}
public class PasswordValidator : IPasswordValidator<ApplicationUser>
{
public Task<IdentityResult> ValidateAsync(UserManager<ApplicationUser> manager, ApplicationUser user, string password)
{
return Task.Run(() =>
{
if (password.Length >= 4) return IdentityResult.Success;
else { return IdentityResult.Failed(new IdentityError { Code = "SHORTPASSWORD", Description = "Password too short" }); }
});
}
}
public class CustomOptions : IOptions<IdentityOptions>
{
public IdentityOptions Value { get; private set; }
public CustomOptions()
{
Value = new IdentityOptions
{
ClaimsIdentity = new ClaimsIdentityOptions(),
Cookies = new IdentityCookieOptions(),
Lockout = new LockoutOptions(),
Password = null,
User = new UserOptions(),
SignIn = new SignInOptions(),
Tokens = new TokenOptions()
};
}
}
}
добавить эту менеджер зависимости пользователя в классе стартапа:
services.AddScoped<ApplicationUserManager>();
Но когда я использую ApplicationUserManager в контроллерах, у меня есть ошибка: Произошло необработанное исключение при обработке запроса.
InvalidOperationException: Не удается разрешить службу для типа «Microsoft.EntityFrameworkCore.DbContextOptions`1 [SecurityDbContext]» при попытке активировать «ApplicationUserManager».
EDIT: Управление пользователя работает, когда я использовать классы ASP.NET Core удостоверений по умолчанию, так что это не проблема базы данных, или что-то вроде этого
EDIT 2: Я нашел решение, у вас есть просто настроить Identity в классе запуска. Мой ответ дает некоторые подробности.
Solution добавлена к официальной документации https://docs.asp.net/en/latest/security/authentication/identity.html – AdrienTorris
Применив свое решение, похоже, в ASP. Net Core опция 'options.Password.RequireNonAlphanumeric = false;' была устарела и разделена на 2 "подпараметры": 'options.Password.RequireDigit = false;' и 'options.Password.RequireNonAlphanumeric = false;'. –