MVC5 中的 IPrincipal 依赖注入

本文关键字:注入 依赖 IPrincipal 中的 MVC5 | 更新日期: 2023-09-27 17:56:01

在另一个堆栈溢出问题MVC5 IoC和身份验证中,第一个答案指出作者使用依赖注入来注入IPrincipal。 我很想为我的汇编程序执行此操作,这样我就不必从控制器传递当前用户(IPrincipal)。

谁能举个例子来说明如何使用DI在C# MVC5中注入IPrincipal?以下是我首先想要实现它的 IoC。 在给出第一个答案后添加。

    public class ViewModelAssemblersInstaller : IWindsorInstaller
    {
        public void Install(IWindsorContainer container, IConfigurationStore store)
        {
            container.Register(
                Component.For<IAspNetUserAssembler>()
                .ImplementedBy<AspNetUserAssembler>());
        }
    }

MVC5 中的 IPrincipal 依赖注入

对于温莎城堡,它是这样的:

container.Register(Component.For<IPrincipal>()
  .LifeStyle.PerWebRequest
  .UsingFactoryMethod(() => HttpContext.Current.User));

它将取决于您的 IoC 容器...对我来说,我使用 Unity,在我的容器注册中,我可以执行以下操作:

container.RegisterType<IPrincipal>(new InjectionFactory(u => HttpContext.Current.User));

使用InjectionFactory,unity将在构造函数注入时执行lambda以返回当前HttpContext.Current.User。我还能够在我的非 Web 应用程序中使用相同的注册类型,而不是引用Thread.CurrentPrincipal