Autofac注册IHttpContextAccessor

时间:2019-07-16 08:30:16

标签: asp.net-core autofac

我使用autofac PropertiesAutowired方法(ASP.NET CORE)。 我需要在类库项目中获得当前用户。我该怎么做?我想要这样的东西

public IHttpContextAccessor ContextAccessor{ get; set; }

然后像

一样使用它
Context.HttpContext.User.Claims.First(i => i.Type == "NameIdentifier"

是否可以做或者应该使用其他方式?

1 个答案:

答案 0 :(得分:0)

注意:仅当按照herehere所述向ASP.NET Core注册Autofac时,以下内容才有效。

如果不需要为属性使用自动布线,建议您执行以下操作

首先,将依赖项注册为singleton(是的,这不是问题,MS也是如此)

builder.RegisterType<HttpContextAccessor>()
   .As<IHttpContextAccessor>
   .SingleInstance();

假设您的类名为MyClass,可通过构造函数将其注入

public MyClass(IHttpContextAccessor httpContextAccessor)
{
   ContextAccessor = httpContextAccessor;
}

现在您可以出发了!我确信您可以使其与自动布线功能一起使用,但是我对这种方法并不熟悉。

作为旁注:

如果您想检索已通过身份验证的用户的信息,我听说并读过,建议您编写类似ApplicationUser类的类,以包装基础框架逻辑。

我实现了类似的here,它也使用IHttpContextAccessor来检索必需的声明+我也在autofac中注册访问器。唯一的区别是我正在使用构造函数注入。

希望对您有所帮助!