【发布时间】:2018-10-11 08:03:26
【问题描述】:
我在我的应用程序中管理不同的客户,所有客户都使用相同的 mvc 应用程序。但我需要根据客户更改密码验证逻辑。
我在 IdentityConfig.cs Create 方法中创建了一个默认密码策略,如下所示:
public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context)
{
var manager = new ApplicationUserManager(context.Get<ApplicationDbContext>());
// Configure validation logic for usernames
manager.UserValidator = new UserValidator<ApplicationUser>(manager)
{
AllowOnlyAlphanumericUserNames = false,
RequireUniqueEmail = true
};
// Configure validation logic for passwords
manager.PasswordValidator = new PasswordValidator
{
RequiredLength = 6,
RequireNonLetterOrDigit = true,
RequireDigit = true,
RequireLowercase = true,
RequireUppercase = true,
};
// Configure user lockout defaults
manager.UserLockoutEnabledByDefault = true;
manager.DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5);
manager.MaxFailedAccessAttemptsBeforeLockout = 5;
return manager;
}
但我需要管理 PasswordValidator 客户特定的。我从子域获取当前客户我的意思是如果我的 url 是 http://example.com/customer1 ,那么我知道这是 customer1 并从数据库获取密码策略设置。我将这些设置放入 Session 变量中。我可以在 IdentityConfig Create 方法中使用 Session 变量,或者如何在创建会话后覆盖 PasswordValidator 属性?
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-identity