1
私はヘッダー内のトークンを検証し、ユーザープリンシパルを設定するカスタム認証属性を持っています。私は、コントローラ .NET Web API 2 UserPrincipal.IsAuthenticated依存インジェクション(Unity)を使用すると常にfalseです。
内のアイデンティティを確認するが、私は私のサービスクラスにIPrincipalを注入するとき、それはもう動作しない場合
//when token is validated
var userIdentityBase = new UserIdentityBase(token); <-- Inherited GenericIdentity
IPrincipal principal = new GenericPrincipal(userIdentityBase, null);
actionContext.Request.GetRequestContext().Principal = principal;
HttpContext.Current.User = principal;
Thread.CurrentPrincipal = principal;
これが正常に動作します。 IsAuthenticated
はfalseです。
Unityセットアップコード:
container.RegisterType<IPrincipal>(new InjectionFactory(u => HttpContext.Current.User));
注射した場合、それは動作しません(両方のスクリーンショットは、同じ要求をwithing取られ):
任意の提案ですか?
依存関係リゾルバは、アプリケーション開始の依存関係を解決しています。その時点で現在のユーザーはいません –
@MarcusHしたがって、実行時にユーザープリンシパルを挿入する方法はありませんか? – Robert
私はそこにいるとは思わないが、私はそれをサポートする事実がない。私はパラメータとしてユーザーを渡すか、または静的変数を現在のユーザーに設定することによって、この問題を解決しました。 –