Я использовал ASP.NET Boilerplate в качестве шаблона для моего приложения в качестве отправной точки.Я был в процессе изменения процесса входа в систему для реализации 2FA.Однако я не уверен, куда поместить эти параметры конфигурации.В предыдущем приложении, использующем .NET MVC с .NET Identity, я мог сделать это в классе, который у нас был как ApplicationUserManager
, который унаследовал UserManager
.Вот как я настроил вещи:
public class ApplicationUserManager : UserManager<User>
{
public ApplicationUserManager(IUserStore<User> store) : base(store)
{
}
public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context)
{
var manager = new ApplicationUserManager(new UserStore<User>(context.Get<Db>()));
// Configure validation logic for usernames
manager.UserValidator = new UserValidator<User>(manager)
{
AllowOnlyAlphanumericUserNames = false,
RequireUniqueEmail = true
};
// Configure user lockout defaults
manager.UserLockoutEnabledByDefault = true;
manager.MaxFailedAccessAttemptsBeforeLockout = 5;
manager.DefaultAccountLockoutTimeSpan = TimeSpan.FromDays(365*500);
manager.RegisterTwoFactorProvider("EmailCode", new EmailTokenProvider<User>()
{
Subject = "Security Code",
BodyFormat = "Your security code is: {0}"
});
manager.EmailService = new EmailService();
var dataProtectionProvider = options.DataProtectionProvider;
if (dataProtectionProvider != null)
{
manager.UserTokenProvider = new DataProtectorTokenProvider<User>(dataProtectionProvider.Create("ASP.NET Identity"));
}
return manager;
}
}
В ASP.NET Boilerplate есть много мощных инструментов и множество интерфейсов, которые могут быть реализованы для помощи в процессе входа в систему.Я видел сообщение на GitHub, где обсуждалось отключение блокировки , и похоже, что я могу добавить в свою базу данных SettingsManager
опции для MaxFailedAccessAttempts
и DefaultLockoutTimeSpan
, но яне уверен, что, просто добавив их в базу данных, они будут автоматически найдены, особенно если я не назову их правильно.Уже есть класс постоянных значений для EmailSettings
, который я смог использовать здесь:
public void Create()
{
// Emailing
AddSettingIfNotExists(EmailSettingNames.DefaultFromAddress, "developer@developer.com");
AddSettingIfNotExists(EmailSettingNames.DefaultFromDisplayName, "do not reply");
AddSettingIfNotExists(EmailSettingNames.Smtp.Host, "smtp.gmail.com");
AddSettingIfNotExists(EmailSettingNames.Smtp.Port, "587");
AddSettingIfNotExists(EmailSettingNames.Smtp.UserName, "developer@developer.com");
AddSettingIfNotExists(EmailSettingNames.Smtp.Password, "SomePassword");
AddSettingIfNotExists(EmailSettingNames.Smtp.EnableSsl, "true");
AddSettingIfNotExists(EmailSettingNames.Smtp.UseDefaultCredentials, "false");
// Languages
AddSettingIfNotExists(LocalizationSettingNames.DefaultLanguage, "en");
}
В проекте Core
также есть класс - AppSettingNames
, который содержит значение дляUiTheme
.Я полагаю, я могу добавить постоянные значения там.Однако, если я сделаю это, нужно ли называть эти настройки идентично именам атрибутов UserManager
?