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 ;
}
在上面的方法中,我不能通过prop或构造函数将参数传递给IPasswordvalidator实现。
例如LastPasswordValidator,我想根据no配置。密码的数量来自选项,但AddPasswordValidator不会获取任何数据。
public class LastPasswordsInPasswordValidator:IPasswordValidator<ApplicationUser>
{
private int LastPasswordsCount { get; set; }
public LastPasswordsInPasswordValidator(IPasswordHasher<ApplicationUser> passwordHasher)
{
this.passwordHasher = passwordHasher;
}
}
这就是我想要的
builder.AddPasswordValidator<LastPasswordsInPasswordValidator>(options);
但是AddPasswordValidator没有重载。!!!
答案 0 :(得分:0)
启动配置服务。
Ioptions模式让生活更轻松,++核心设计模式 当我们需要跨应用程序的数据时,无需通过properties / Constructor传递数据,Ioptions为您提供
services.Configure<PasswordValidateOptions>(Configuration.GetSection("PasswordValidateOptions"));
IpasswordValidator的实施
private PasswordValidateOptions PasswordValidateOptions { get; set; }
public LastPasswordsInPasswordValidator(IOptions<PasswordValidateOptions> options)
{
this.PasswordValidateOptions = options.Value;
}