Asp.net mvc Asp.net Mvc:Ninject-IPrincipal
我想知道如何使用Ninject将IPrincipal绑定到Asp.net Mvc中的HttpContext.Current.User 友好的问候, 纠察队 编辑: 不确定这是否重要,但我使用自己的CustomPrincipal类。我想我得到了:Asp.net mvc Asp.net Mvc:Ninject-IPrincipal,asp.net-mvc,inversion-of-control,ninject,iprincipal,Asp.net Mvc,Inversion Of Control,Ninject,Iprincipal,我想知道如何使用Ninject将IPrincipal绑定到Asp.net Mvc中的HttpContext.Current.User 友好的问候, 纠察队 编辑: 不确定这是否重要,但我使用自己的CustomPrincipal类。我想我得到了: public class PrincipalProvider : IProvider { public object Create(IContext context) { return HttpContext.Curren
public class PrincipalProvider : IProvider
{
public object Create(IContext context)
{
return HttpContext.Current.User;
}
public System.Type Type
{
get { return typeof(CustomPrincipal); }
}
}
在我的模块中,我会:
Bind<IPrincipal>().ToProvider<PrincipalProvider>();
Bind().ToProvider();
如果这是错误的或不完整的,请让我知道,我会调整/删除。您无需在
Ninject模块中提供程序即可执行此操作:
Bind<IPrincipal>()
.ToMethod(ctx => HttpContext.Current.User)
.InRequestScope();
Bind()
.ToMethod(ctx=>HttpContext.Current.User)
.InRequestScope();
注意,我包括了.InRequestScope()
,以确保每个HTTP请求都缓存一次该方法的值。即使您使用提供程序机制,我也建议您这样做。是否可以在不同的层(包括不引用web的层)上持久化IProvider?