Asp.net Mvc: Ninject - IPrincipal - PullRequest
       10

Asp.net Mvc: Ninject - IPrincipal

14 голосов
/ 28 апреля 2010

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

Привет,

Pickels

Edit:

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

Ответы [ 2 ]

27 голосов
/ 28 апреля 2010

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

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

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

2 голосов
/ 28 апреля 2010

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

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

Если это неправильно или не завершено, пожалуйста, дайте мне знать, и я отрегулирую / удалю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...