从内部获取 ClaimsPrincipal 或 ClaimsIdentity ASP.NET 核心依赖注入
Getting the ClaimsPrincipal or ClaimsIdentity from inside ASP.NET Core dependency Injection
我有一个 class 具有 ClaimsIdentity
作为依赖项,如下所示:
public ClaimsIdentityDecorator(ClaimsIdentity identity)
这应该是当前用户的 Claimsidentity。我像这样通过 IHttpContextAccessor
检索它:
services.AddScoped( x=>
{
var context = x.GetService<IHttpContextAccessor>();
return context.HttpContext.User.Identity as ClaimsIdentity;
});
我需要检查用户声明,ClaimsIdentity 或 ClaimsPrincipal 或其他一些身份对象似乎会自动为我注入。从 HttpContext 中检索它并自己添加它就可以了。但是,如果已经有另一个对象或接口声明了它,我想设计我的 classes 来接受这种依赖。
另外,我只是想确保它应该在范围级别注入。
据我所知,没有提供 ClaimsIdentity
的内置方法,但您可能需要 AddTransient
。如果用户注销,但实例是在请求开始时创建的 AddScoped
将不会反映该更改。
我有一个 class 具有 ClaimsIdentity
作为依赖项,如下所示:
public ClaimsIdentityDecorator(ClaimsIdentity identity)
这应该是当前用户的 Claimsidentity。我像这样通过 IHttpContextAccessor
检索它:
services.AddScoped( x=>
{
var context = x.GetService<IHttpContextAccessor>();
return context.HttpContext.User.Identity as ClaimsIdentity;
});
我需要检查用户声明,ClaimsIdentity 或 ClaimsPrincipal 或其他一些身份对象似乎会自动为我注入。从 HttpContext 中检索它并自己添加它就可以了。但是,如果已经有另一个对象或接口声明了它,我想设计我的 classes 来接受这种依赖。
另外,我只是想确保它应该在范围级别注入。
据我所知,没有提供 ClaimsIdentity
的内置方法,但您可能需要 AddTransient
。如果用户注销,但实例是在请求开始时创建的 AddScoped
将不会反映该更改。