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