从内部获取 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 将不会反映该更改。