1

提供されたヘッダーに基づいて、Thread.CurrentPrincipal と HttpContext.Current.User にカスタム IPrincipal (ServicePrincipal) を設定する Web-API サービスにDelegatingHandlerがあります。これはすべてSendAsyncの呼び出しで行われます。

ただし、呼び出しが Controller に入ると、User プロパティ、HttpContext.User、および Thread.CurrentPrincipal はすべて不思議なことに RolePrincipal に設定されています。

私が間違っていること、または追加のプリンシパルが設定されないようにする方法を誰かが知っていますか?

ありがとう、
キーロン

4

1 に答える 1

3

この質問が古いことは知っていますが、関数オーバーライド内から現在のユーザーを取得しようとして、同様の問題が発生していましたDelegatingHandler.SendAsync()。へのIPrincipal呼び出し後まで、オブジェクトは初期化されないようですbase.SendAsync()。その行が呼び出された後、IPrincipalオブジェクトにはユーザー情報が含まれている必要があります。

私はrequest.GetRequestContext().Principalそれを取得するために使用されますが、私Thread.CurrentPrincipalもうまくいくと思います。

于 2016-02-29T21:04:45.713 に答える