我需要在控制器的构造函数中使用一些当前用户的数据来初始化存储库,但看起来无法获取当前用户的数据,因为所有对象都可以提供任何关于用户(例如HttpContext
或User
)在构造函数区域中可以为空。如何在构造函数中获取所需数据或以任何其他方式使用用户数据初始化存储库?
答案 0 :(得分:3)
您可以使用IHttpContextAccessor
访问构造函数中的HttpContext
;
public class HomeController : Controller
{
public HomeController(IHttpContextAccessor httpContextAccessor)
{
var httpContext = httpContextAccessor.HttpContext;
}
}
如果在启动类和ASP.NET Core 2.0的configure方法中使用ASP.NET Core 1.x注册IHttpContextAccessor
,我认为不需要。
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
答案 1 :(得分:0)
为什么在构造函数中?
有四种方法可以在MVC中获取当前用户的数据: