【发布时间】:2010-04-28 15:53:20
【问题描述】:
我想知道如何使用 Ninject 将 IPrincipal 绑定到 Asp.net Mvc 中的 HttpContext.Current.User。
友好的问候,
泡菜
编辑:
不确定是否重要,但我使用自己的 CustomPrincipal 类。
【问题讨论】:
标签: asp.net-mvc inversion-of-control ninject iprincipal
我想知道如何使用 Ninject 将 IPrincipal 绑定到 Asp.net Mvc 中的 HttpContext.Current.User。
友好的问候,
泡菜
编辑:
不确定是否重要,但我使用自己的 CustomPrincipal 类。
【问题讨论】:
标签: asp.net-mvc inversion-of-control ninject iprincipal
您可以在您的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>();
如果这是错误的或不完整的,请告诉我,我会调整/删除。
【讨论】: