2

この記事を参考に、Web APIで利用するBasic Http Authenticationの属性を書きました。属性クラスでは、提供された資格情報が一致する場合、HttpContext.Current.User を次のように設定しています。

 HttpContext.Current.User = new GenericPrincipal(new ApiIdentity(apiUser), new string[] {});

base.OnActionExecuting(actionContext);

ただし、API コントローラー内で User にアクセスすると、apiUser プロパティがありません。

これはなぜですか?また、ID を設定して API コントローラーでアクセスする正しい方法は何ですか?

4

2 に答える 2

2

いいえ、残念ながら両方を設定する必要があります。

Thread.CurrentPrincipal および HttpContext.User

于 2012-12-20T06:00:52.320 に答える
1

ASP.NET Web API アプリケーションでは、 current に依存しないでくださいHttpContext。あなたの質問への答えとして、プリンシパルをに設定するThread.CurrentPrincipalことがあなたが望むものです:

Thread.CurrentPrincipal = new GenericPrincipal(new ApiIdentity(apiUser), new string[] {});
于 2012-12-19T19:16:24.767 に答える