Asp.net Mvc: Ninject - IPrincipal

Мне было интересно, как я могу привязать IPrincipal к HttpContext.Current.User в Asp.net Mvc с Ninject.

Дружественные приветствия,

Pickels

Edit:

Не уверен, имеет значение, но я использую свой собственный класс CustomPrincipal.

14
28 апр. '10 в 18:53
источник поделиться
2 ответов

Вы можете сделать это без необходимости в провайдере в NinjectModule:

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

Примечание. Я включил .InRequestScope(), чтобы гарантировать, что значение метода кэшируется один раз для HTTP-запроса. Я бы рекомендовал сделать это, даже если вы используете механизм поставщика.

27
28 апр. '10 в 21:19
источник

Думаю, я понял:

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

Если это неверно или не полностью, сообщите мне, и я отрегулирую/удалю.

2
28 апр. '10 в 19:42
источник

Посмотрите другие вопросы по меткам или Задайте вопрос