0
私はクレームにいくつかのユーザー固有の値を保存しているAsp.Net WebApiアプリケーションを実装しています。Asp.Netは外部アセンブリ内のクレームIDにアクセスします
私のプロジェクトは、モデルとコントローラを持ついくつかのクラスライブラリプロジェクトで構成されています。
今私は主プロジェクト(クラスライブラリ内)のコントローラからクレームにアクセスしようとしています。
//calling this from a class library
var identity = Thread.CurrentPrincipal.Identity; //No user information such as Id available
var claims = ClaimsPrincipal.Current.Claims; //Contains zero elements
ここでは、クレームにはゼロ要素が含まれています。しかし、もし私が上記のコードをメインプロジェクトのコントローラーに置くと、すべて正常に動作します。
外部アセンブリからクレームにアクセスするにはどうすればよいですか?
制御できない静的メンバーに頼るのではなく、単にIDを渡す方が良いでしょう。ライブラリもテスト可能にします。 – poke
@poke 'Thread.CurrentPrincipal.Identity; 'を使ってIDオブジェクトにアクセスできました。私はそれに関するユーザー情報を見ることができません。あなたは簡単な例で答えを提供していただけますか? – Rahul
あなたのWeb APIで、あなたのライブラリを以下のように呼び出してください: 'myCustomLibrary.DoSomething(currentPrincipal、otherArgument)' - つまりあなたのメソッドにプリンシパルを渡してください。 – poke