Ninject в сочетании с Owin

Я пытаюсь понять, как я могу предоставить свой контекст структуры Entity, чтобы моя аутентификация работала правильно. Я инициализирую Овина так:

        public void ConfigureAuth(IAppBuilder app)
        {        
            app.CreatePerOwinContext<AppContext>(AppContext.Create); // creates EF context
            app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
            app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
            ....
        }

И ApplicationUserManager выглядит так:

        public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context)
        {               
            var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<AppContext>()));
            ....
         }

Аутентификация и все остальное работает правильно таким образом. Как видите, я получаю AppContext из контекста owin, который я ранее инициализировал.

Я хотел бы внедрить это с помощью Ninject, чтобы это выглядело так:

            public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context)
            {
                // get app context from Ninject kernel
                var appContext = KernelProvider.Kernel.Get<AppContext>();
                var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(appContext));
                ----
             }

В AppContext я инициализирую CurrentUser как:

        public AppContext()
            : base("DefaultConnection", false) // set IsIdentityV1Schema to false to prevent executing additional SQL queries
        {
            if (HttpContext.Current != null)
            {
                if (HttpContext.Current.User != null)
                {
                    if (HttpContext.Current.User.Identity.IsAuthenticated != false)
                    {
                        currentIdentity = HttpContext.Current.User.Identity;
                    }
                }
            }
        }

Это не работает, если я ввожу AppContext через Ninject. Есть ли способ сделать эту работу или, может быть, есть какой-то другой лучший способ?

Спасибо за любые предложения!

0 ответов

Другие вопросы по тегам