MVC 4和Ninject:如何将客户端的用户ID添加到我注入的类中?

AJ.*_*AJ. 1 asp.net-mvc ninject asp.net-mvc-4

我正在使用Ninject 3.0将服务层数据访问类注入我的控制器.我想在运行时将客户端的域用户ID添加到这些类,但无法弄清楚我应该使用哪种方法.目前我NinjectModule看起来像这样:

public class NinjectBindModule : NinjectModule
{
    public override void Load()
    {
        Bind<ISomeRepo>().To<SomeRepo>();
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题,分两部分真的是:

  1. 我应该WithConstructorArgument用来获取用户ID SomeRepo,还是其他东西(属性?).我是否可以在绑定模块中执行此操作,还是必须在内核或控制器级别执行此操作?
  2. 我应该使用什么方法来检索客户端的域用户ID?我不认为我可以在内核级别或绑定模块中使用Controller.User属性,是吗?

Dar*_*rov 5

public class NinjectBindModule : NinjectModule
{
    public override void Load()
    {
        Bind<ISomeRepo>().To<SomeRepo>();
        Bind<IPrincipal>()
            .ToMethod(ctx => HttpContext.Current.User)
            .InRequestScope();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后:

public class SomeRepo : ISomeRepo
{
    private readonly IPrincipal _principal;
    public SomeRepo(IPrincipal principal)
    {
        _principal = principal;
    }

    ... some methods that will have access to the principal
}
Run Code Online (Sandbox Code Playgroud)