Мне было интересно, как я могу привязать IPrincipal к HttpContext.Current.User в Asp.net Mvc с помощью Ninject.
Дружественные приветствия,
Пикели
Редактировать:
Не уверен, что это важно, но я использую свой собственный класс CustomPrincipal.
Мне было интересно, как я могу привязать IPrincipal к HttpContext.Current.User в Asp.net Mvc с помощью Ninject.
Дружественные приветствия,
Пикели
Редактировать:
Не уверен, что это важно, но я использую свой собственный класс CustomPrincipal.
Вы можете сделать это без необходимости наличия провайдера в вашем NinjectModule
:
Bind<IPrincipal>()
.ToMethod(ctx => HttpContext.Current.User)
.InRequestScope();
Обратите внимание: я включил .InRequestScope()
, чтобы значение метода кэшировалось один раз для каждого HTTP-запроса. Я бы рекомендовал сделать это, даже если вы используете механизм провайдера.
Думаю, я понял:
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>();
Если это неверно или неполно, дайте мне знать, и я исправлю / удалю.