如何在Controller的构造函数中获取当前用户的数据?

时间:2017-10-12 11:55:45

标签: c# asp.net-mvc asp.net-core-mvc asp.net-identity

我需要在控制器的构造函数中使用一些当前用户的数据来初始化存储库,但看起来无法获取当前用户的数据,因为所有对象都可以提供任何关于用户(例如HttpContextUser)在构造函数区域中可以为空。如何在构造函数中获取所需数据或以任何其他方式使用用户数据初始化存储库?

2 个答案:

答案 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中获取当前用户的数据:

  1. 您可以为当前用户的数据创建会话(首选)
  2. 您可以将数据存储在本地存储中。
  3. 使用cookies。但这取决于用户浏览器中允许的cookie。
  4. MVC提供ViewBag。您可以使用它传递数据。