【问题标题】:Asp.net Mvc: Ninject - IPrincipalAsp.net Mvc: Ninject - IPrincipal
【发布时间】:2010-04-28 15:53:20
【问题描述】:

我想知道如何使用 Ninject 将 IPrincipal 绑定到 Asp.net Mvc 中的 HttpContext.Current.User。

友好的问候,

泡菜

编辑:

不确定是否重要,但我使用自己的 CustomPrincipal 类。

【问题讨论】:

    标签: asp.net-mvc inversion-of-control ninject iprincipal


    【解决方案1】:

    您可以在您的NinjectModule 中无需提供者就可以做到这一点:

    Bind<IPrincipal>()
      .ToMethod(ctx => HttpContext.Current.User)
      .InRequestScope();
    

    注意,我包含了.InRequestScope() 以确保方法的值在每个HTTP 请求中被缓存一次。即使您使用提供者机制,我也建议您这样做。

    【讨论】:

      【解决方案2】:

      我想我明白了:

      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 持久化到不同的层,包括不引用网络的层?
      猜你喜欢
      • 2011-05-28
      • 2014-09-04
      • 2010-11-07
      • 2011-04-25
      • 2012-01-05
      • 1970-01-01
      • 1970-01-01
      • 2011-06-24
      • 1970-01-01
      相关资源
      最近更新 更多