Asp.net Mvc: Ninject - IPrincipal

14
我想知道如何在Asp.net Mvc中使用Ninject将IPrincipal绑定到HttpContext.Current.User。
友好的问候,
Pickels
编辑:
不确定是否重要,但我使用自己的CustomPrincipal类。
2个回答

27

您可以在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>();

如果有错误或不完整,请告诉我,我会进行调整/删除。

在不涉及 Web 的各个层面中,是否有可能持久化 IProvider? - Haroon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接