gpt4 book ai didi

c# - ASP.NET Core 在 Controller 构造函数中访问 User.Identity

转载 作者:太空狗 更新时间:2023-10-29 18:11:41 27 4
gpt4 key购买 nike

我有一个场景,我需要在构造函数的 Controller 中访问 User.Identity 声明。

我需要这个,因为声明中有我需要的信息来启动自定义数据库上下文(连接字符串)

我怎样才能访问它?我只会注入(inject) DBContext,但根据用户的不同,他们可能需要访问不同的数据库。

有没有更好的方法来考虑这个问题?

[Authorize]
public class DefaultController : Controller
{
public DefaultController()
{
// this is NULL
var authenticatedUser = User.Identity.Name;
}
}

最佳答案

从 ASP.NET Core 2.1 版开始,提供了 HttpContextAccessor。为此,我们必须遵循以下步骤:

Startup.csConfigureServices 方法中使用标准实现配置服务:

services.AddHttpContextAccessor();

在 Controller 上执行 IHttpContextAccessor 的依赖注入(inject)。使用 HttpContext 属性访问 User

[Authorize]
public class DefaultController : Controller
{
public DefaultController(IHttpContextAccessor contextAccessor)
{
// Here HttpContext is not Null :)
var authenticatedUser = contextAccessor.HttpContext.User.Identity.Name;
}
}

关于c# - ASP.NET Core 在 Controller 构造函数中访问 User.Identity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51070520/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com