暂时禁用密码要求

3

我将用户账户迁移到一个要求密码至少6个字符的应用程序中。

如果我运行以下函数

var result = await UserManager.CreateAsync(newUser, "");

当然会提示密码无效。我能否临时忽略密码要求以便创建用户呢?

注:

private ApplicationUserManager _userManager;
    public ApplicationUserManager UserManager
    {
        get
        {
            if (_userManager == null)
            {
                this._userManager = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
            }
            return _userManager;
        }
        private set
        {
            _userManager = value;
        }
    }

很遗憾,这并不起作用:

this._userManager.PasswordValidator = new PasswordValidator
{
    RequiredLength = -1, // I've also tried 0
    RequireNonLetterOrDigit = false,
    RequireDigit = false,
    RequireLowercase = false,
    RequireUppercase = false,
};

如其所述,“您的密码长度必须至少为-1个字符”


4
实现您自己的密码验证器? - trailmax
2个回答

5
感谢 @trailmax。
啊,这似乎很好地完成了它!
this._userManager.PasswordValidator = new CustomPasswordValidator();

and the validator...

public class CustomPasswordValidator : IIdentityValidator<string>
{
    public CustomPasswordValidator()
    {
    }

    public Task<IdentityResult> ValidateAsync(string item)
    {
        return Task.FromResult(IdentityResult.Success);
    }
}

1
使用 IdentityServer4,有一个验证器的 IList。我不得不暂时禁用它,所以我这样做:
var pwValidators = userManager.PasswordValidators.ToList();
userManager.PasswordValidators.Clear(); 

addPaswordResult = await userManager.AddPasswordAsync(user, password);

pwValidators.ForEach(x => userManager.PasswordValidators.Add(x));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接