我使用autofac PropertiesAutowired方法(ASP.NET CORE)。 我需要在类库项目中获得当前用户。我该怎么做?我想要这样的东西
public IHttpContextAccessor ContextAccessor{ get; set; }
然后像
一样使用它Context.HttpContext.User.Claims.First(i => i.Type == "NameIdentifier"
是否可以做或者应该使用其他方式?
答案 0 :(得分:0)
注意:仅当按照here或here所述向ASP.NET Core注册Autofac时,以下内容才有效。
如果不需要为属性使用自动布线,建议您执行以下操作
首先,将依赖项注册为singleton(是的,这不是问题,MS也是如此)
builder.RegisterType<HttpContextAccessor>()
.As<IHttpContextAccessor>
.SingleInstance();
假设您的类名为MyClass
,可通过构造函数将其注入
public MyClass(IHttpContextAccessor httpContextAccessor)
{
ContextAccessor = httpContextAccessor;
}
现在您可以出发了!我确信您可以使其与自动布线功能一起使用,但是我对这种方法并不熟悉。
作为旁注:
如果您想检索已通过身份验证的用户的信息,我听说并读过,建议您编写类似ApplicationUser
类的类,以包装基础框架逻辑。
我实现了类似的here,它也使用IHttpContextAccessor
来检索必需的声明+我也在autofac中注册访问器。唯一的区别是我正在使用构造函数注入。
希望对您有所帮助!