创建一个禁止密码列表,将需要禁止的密码添加到该列表中。例如,我们可以创建一个列表,将最常见的,易受攻击的密码添加到其中。
public static class BlockedPasswords
{
public static readonly string[] Passwords = new string[]
{
"password",
"123456",
"qwerty",
"abcdef",
//...
};
}
创建一个自定义验证器(密码验证器),检查输入的密码是否在禁止密码列表中,如果在,则阻止用户密码。
public class CustomPasswordValidator : IPasswordValidator
{
public Task ValidateAsync(UserManager manager, ApplicationUser user, string password)
{
if (BlockedPasswords.Passwords.Contains(password))
{
return Task.FromResult(
IdentityResult.Failed(new IdentityError
{
Code = "BlockedPassword",
Description = "Password is not allowed."
}));
}
return Task.FromResult(IdentityResult.Success);
}
}
在应用程序启动时配置密码验证器。
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddIdentity()
.AddPasswordValidator()
.AddEntityFrameworkStores();
// ...
}
这样,当用户尝试使用禁止密码时,将会出现IdentityError,并且用户无法更改或创建其密码。