14

MVC4 に基づく Windows 認証を使用するイントラネット アプリケーションがあります。

コントローラーで認証目的で WindowsIdentity が必要な場合は、使用するだけです

 HttpContext.User.Identity

ここで、いくつかの Ajax 呼び出しに新しい Asp.Net WebAPI を使用したいと考えました。

MVC コントローラーと同じ簡単な方法で WindowsIdenty オブジェクトを取得する方法はありますか?

4

1 に答える 1

24

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 .

于 2013-02-14T13:44:01.263 に答える