2010-04-28 46 views
14

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

友好的祝福,

Pickels

编辑:如果

不知道它的问题,但我用我自己的CustomPrincipal类。

回答

27

你可以做到这一点,而不需要在您的NinjectModule提供商:

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

注意,我包括.InRequestScope(),以确保该方法的值是每HTTP请求缓存一次。即使你使用提供者机制,我也建议你这样做。

+0

谢谢,这是一个很棒的提示。 – Pickels 2010-04-28 18:55:09

+0

没问题,希望它有帮助! – 2010-04-28 20:06:16

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>(); 

如果这是错误的或不完整,请让我知道,我会调整/删除。

+0

是否可以将IProvider保存在不同的图层上,包括那些不参考网页的图层? – Haroon 2011-06-23 06:31:02

相关问题