2010-04-28 14 views
14

Mi chiedevo come avrei potuto associare IPrincipal a HttpContext.Current.User in Asp.net Mvc con Ninject.Asp.net Mvc: Ninject - IPrincipal

saluti amichevoli,

Pickels

Edit:

Non sono sicuro se è importante ma io uso la mia classe di CustomPrincipal.

risposta

27

Si può fare questo senza la necessità di un fornitore nel vostro NinjectModule:

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

nota, ho incluso .InRequestScope() per garantire che il valore del metodo viene memorizzata nella cache una volta per ogni richiesta HTTP. Mi consiglia di farlo anche se si utilizza il meccanismo del provider.

+0

Wow, grazie, è un ottimo consiglio. – Pickels

+0

Nessun problema, spero che aiuti! –

2

che ho preso:

public class PrincipalProvider : IProvider 
{ 
    public object Create(IContext context) 
    { 
     return HttpContext.Current.User; 
    } 

    public System.Type Type 
    { 
     get { return typeof(CustomPrincipal); } 
    } 
} 

E nella mia NinjectModule faccio:

Bind<IPrincipal>().ToProvider<PrincipalProvider>(); 

Se questo è sbagliato o non completa per favore fatemelo sapere e io regolare/eliminare.

+0

è possibile mantenere IProvider su diversi livelli, inclusi quelli che non fanno riferimento al Web? – Haroon

Problemi correlati