我想知道如何在Asp.net Mvc中使用Ninject将IPrincipal绑定到HttpContext.Current.User。Asp.net Mvc:Ninject - IPrincipal
友好的祝福,
Pickels
编辑:如果
不知道它的问题,但我用我自己的CustomPrincipal类。
我想知道如何在Asp.net Mvc中使用Ninject将IPrincipal绑定到HttpContext.Current.User。Asp.net Mvc:Ninject - IPrincipal
友好的祝福,
Pickels
编辑:如果
不知道它的问题,但我用我自己的CustomPrincipal类。
你可以做到这一点,而不需要在您的NinjectModule
提供商:
Bind<IPrincipal>()
.ToMethod(ctx => HttpContext.Current.User)
.InRequestScope();
注意,我包括.InRequestScope()
,以确保该方法的值是每HTTP请求缓存一次。即使你使用提供者机制,我也建议你这样做。
想我明白了:
public class PrincipalProvider : IProvider
{
public object Create(IContext context)
{
return HttpContext.Current.User;
}
public System.Type Type
{
get { return typeof(CustomPrincipal); }
}
}
在我NinjectModule我做的:
Bind<IPrincipal>().ToProvider<PrincipalProvider>();
如果这是错误的或不完整,请让我知道,我会调整/删除。
是否可以将IProvider保存在不同的图层上,包括那些不参考网页的图层? – Haroon 2011-06-23 06:31:02
谢谢,这是一个很棒的提示。 – Pickels 2010-04-28 18:55:09
没问题,希望它有帮助! – 2010-04-28 20:06:16