После внедрения Simpleinjector, MVC Indentity TwoFactorAuthentication перестала работать.Я подозреваю, что это потому, что Simpleinjector не использует зарегистрированный экземпляр WiasApplicationUserManager
, но создает новый, и поэтому инициализация теряется.
В Startup.Auth.cs
У меня есть:
app.CreatePerOwinContext<WiasApplicationUserManager>(WiasApplicationUserManager.Create);
app.CreatePerOwinContext<WiasSignInManager>(WiasSignInManager.Create);
И в SimpleInjectorInitializer
private static void InitializeContainer(Container container)
{
container.Register<IUserStore<WiasApplicationUser, int>>(
() => new WiasUserStore(), Lifestyle.Scoped);
container.Register(
() => new UserManager<WiasApplicationUser, int>(
new WiasUserStore()), Lifestyle.Scoped);
container.Register(() =>
container.IsVerifying
? new OwinContext().Authentication
: HttpContext.Current.GetOwinContext().Authentication,
Lifestyle.Scoped);
container.Register<IViewModel<UserViewModel>, UserViewModel>();
container.Register<IViewModel<UsersViewModel>, UsersViewModel>();
container.Register(typeof(ICommandHandler<>), typeof(ICommandHandler<>).Assembly);
container.Register(typeof(IQueryHandler<,>), typeof(IQueryHandler<>).Assembly);
}
TwoFactorProviders зарегистрированы в WiasApplicationUserManager.Create()
manager.RegisterTwoFactorProvider("Phone Code", new PhoneNumberTokenProvider<WiasApplicationUser, int>
{
MessageFormat = "Your security code is {0}"
});
manager.RegisterTwoFactorProvider("Email Code", new EmailTokenProvider<WiasApplicationUser, int>
{
Subject = "Security Code",
BodyFormat = "Your security code is {0}"
});
Как я могу настроить это так, чтобы конфигурация, выполненная в WiasApplicationUserManager.Create()
, не теряласькогда Simpleinjector вводит его в AccountController
?
Я пытался:
container.Register<WiasSignInManager>(() =>
{
var cbase = new HttpContextWrapper(HttpContext.Current);
return cbase.GetOwinContext().Get<WiasSignInManager>();
});
Но cbase.GetOwinContext()
возвращает ноль.