我们将用户分为几组。每个组都有不同的密码策略。我要实现的是在特定用户更改密码之前,动态加载与该用户相关的密码策略,然后使用该策略验证新密码。
我知道我可以在启动类中为每个应用程序全局设置默认密码策略:
services.Configure<IdentityOptions>(options =>
{
options.Password.RequireDigit = false;
options.Password.RequiredLength = 5;
options.Password.RequireLowercase = true;
options.Password.RequireNonLetterOrDigit = true;
options.Password.RequireUppercase = false;
});
它很好用,但是我们希望在运行时加载基于用户的策略。
我现在想到的唯一解决方案是创建自己的IPasswordValidator实现,在这里我可以简单地加载密码策略并自己完成所有操作(这意味着检查新密码中是否存在小写字母)此用户附加的政策所要求的等)。但是在我开始实施此功能之前,我想知道是否有更漂亮的解决方案。
理想情况下,我想使用动态生成的PasswordOptions对象来验证用户的密码。