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>());
}
}
对于温莎城堡,它是这样的:
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
。