public static IdentityBuilder AddCustomPasswordValidator<TUser>(this IdentityBuilder builder, PasswordValidateOptions options) where TUser : class
{
if (!options.EmailInPassword)
builder.AddPasswordValidator<EmailInPasswordValidator>();
if (!options.UserNameInPassword)
builder.AddPasswordValidator<UserNameInPasswordValidator>();
if (!options.LastPasswordsInPassword)
builder.AddPasswordValidator<LastPasswordsInPasswordValidator>();
return builder ;
}
上記の方法では、IPasswordvalidator実装にpropまたはコンストラクタを介して引数を渡すことはできません。コンフィグレーションに基づいてコアaspnet IDパスワードバリデーター
たとえばLastPasswordValidatorのように、オプションからのパスワードの数はカウントされますが、AddPasswordValidatorはデータを取得しません。
public class LastPasswordsInPasswordValidator:IPasswordValidator<ApplicationUser>
{
private int LastPasswordsCount { get; set; }
public LastPasswordsInPasswordValidator(IPasswordHasher<ApplicationUser> passwordHasher)
{
this.passwordHasher = passwordHasher;
}
}
これは私が
builder.AddPasswordValidator<LastPasswordsInPasswordValidator>(options);
にしたいものですが、AddPasswordValidatorには、過負荷を持っていません。!!!
バリデータコンストラクタへの依存としてオプションを注入しようとしましたか? – Brad
@ブラッド、試しましたが、同じです。私は、コンストラクタのパラメータで汎用型を受け入れるために、IdentityBuilder.AddPasswordValidatorメソッドをオーバーライドする必要があると思います。そのアイデンティティベースクラスのため、私は本当にわかりません。[private PasswordValidateOptions PasswordValidateOptions {get;セット; } パブリックLastPasswordsInPasswordValidator(IOptionsオプション) { this.PasswordValidateOptions = options.Value; }] –
Jay
このように、タイプに沿ってデータを渡す方法 – Jay