2010-04-28 48 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

相關問題