5

内部からClaimsPrincipalまたはClaimsIdentityを取得、私はそうのような依存関係としてClaimsIdentity持つクラスがあります。想定しているASP.NETコア依存性注入

公共ClaimsIdentityDecorator(ClaimsIdentityアイデンティティ)

を現在のユーザーの主張になるようにします。私は、ユーザーの主張を検査する必要があり、ClaimsIdentityまたはClaimsPrincipalまたはいくつかの他のアイデンティティオブジェクトは自動的に私のために注入されることを思わ

services.AddScoped(x=> 
{ 
    var context = x.GetService<IHttpContextAccessor>(); 
    return context.HttpContext.User.Identity as ClaimsIdentity; 
}); 

:私はそうのようなIHttpContextAccessor経由のようにそれを取得します。それをHttpContextから取得し、それを自分で追加するのは問題ありません。しかし、すでにそこにある主張を持つ別のオブジェクトやインタフェースがある場合は、その依存関係を取るようにクラスを設計したいと思います。

また、スコープレベルで注入する必要があります。

+0

「IHttpContextAccessor」を依存クラスに挿入し、必要に応じてコンテキストからユーザを抽出するだけではいかがですか。 – Nkosi

+0

@ Nkosi私は現在のユーザーと彼の主張がほしいからです。 httpコンテキスト全体ではありません。 –

答えて

3

私が知っているClaimsIdentityを提供する方法はありませんが、おそらくAddTransientが必要です。ユーザーがログアウトしたが、要求の開始時にインスタンスが作成された場合、AddScopedはその変更を反映しません。