MVC4 に基づく Windows 認証を使用するイントラネット アプリケーションがあります。
コントローラーで認証目的で WindowsIdentity が必要な場合は、使用するだけです
HttpContext.User.Identity
ここで、いくつかの Ajax 呼び出しに新しい Asp.Net WebAPI を使用したいと考えました。
MVC コントローラーと同じ簡単な方法で WindowsIdenty オブジェクトを取得する方法はありますか?
MVC4 に基づく Windows 認証を使用するイントラネット アプリケーションがあります。
コントローラーで認証目的で WindowsIdentity が必要な場合は、使用するだけです
HttpContext.User.Identity
ここで、いくつかの Ajax 呼び出しに新しい Asp.Net WebAPI を使用したいと考えました。
MVC コントローラーと同じ簡単な方法で WindowsIdenty オブジェクトを取得する方法はありますか?
HttpContext
コントローラから を参照しないでください。
User
への直接参照なしで Identity にアクセスする方法であるControllers プロパティにアクセスできますHttpContext
。
public class MyController : ApiController
{
public string Get()
{
var indenty = this.User.Identity;
}
}
どうして
controllersUser
プロパティは、より簡単なモック化と単体テストを可能にする抽象化のレベルを提供します。この抽象化により、移植性も向上します。たとえば、これが WebApi Self Host の場合、アクセスすることさえできませんHttpContext
。
User プロパティを単体テストしてモックする方法の詳細については、こちらを参照してください。詳しくは re: portability read here .