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

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

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

最佳答案

您可以在构造函数中使用IHttpContextAccessor访问HttpContext

public class HomeController : Controller
{
    public HomeController(IHttpContextAccessor httpContextAccessor)
    {
        var httpContext = httpContextAccessor.HttpContext;
    }
}

如果您使用的是 ASP.NET Core 1.x,请在启动类的配置方法中注册 IHttpContextAccessor,对于 ASP.NET Core 2.0,我认为这不是必需的。

services.TryAddScoped<IHttpContextAccessor, HttpContextAccessor>();

关于c# - 如何在 Controller 的构造函数中获取当前用户的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46708980/

相关文章:

c# - 我可以为多个基于表单的事件分配一个方法吗?

asp.net-mvc - 使用 web.config 关闭 MVC 中的身份验证

c# - EmailAttribute 未在 ASP.NET Core 的 ViewModel 中正确验证

c# - .NET 中的委托(delegate) : how are they constructed?

c# - 使用 System.Reflection 时验证异常时出错

asp.net-mvc - 为什么模型绑定(bind)比过滤器更早发生

https - 在 Windows 网络服务器上使用公共(public)证书运行/配置自托管控制台应用程序(ASP.net 核心 2.1、Kestrel)时出现问题

asp.net-core - 使用 Asp.net Core 将 DataList 导出到 Excel

c# - 在 C# 中删除列表列表中的元素时出现问题

c# - 当用户拥有先前有效的 cookie 时,如何删除对网站的访问?