IAuthenticationManager

IAuthenticationManager

我希望我的Web API应用程序通过ASP.NET Identity登录用户。
在我的AuthController中,执行以下操作:

//...getting claimsIdentity etc...

_authenticationManager.SignIn(claimsIdentity)

其中_authenticationManagerIAuthenticationManager的实例

我正在使用Unity,因此IAuthenticationManager通过以下方式注册:

container.RegisterType<IAuthenticationManager>(new InjectionFactory(o => HttpContext.Current.GetOwinContext().Authentication));

这适用于我在IIS中托管的应用。但是我也有一些在自托管环境上运行的集成测试,问题是IAuthenticationManager解析失败,因为HttpContext.Current为null。

有什么方法可以注册IAuthenticationManager实现并在自托管和IIS中使用它?我也确实希望能够通过我的控制器的构造函数在单元测试中注入这种依赖性。

最佳答案

尝试在unity.config中添加以下行:

container.RegisterType<IAuthenticationManager>(new InjectionFactory(o => HttpContext.Current.GetOwinContext().Authentication));

10-07 20:18