2013-02-14 34 views
14

MVC4に基づくWindows認証を使用したイントラネットアプリケーションがあります。Windows認証とAsp.Net Web API

私はちょうど

HttpContext.User.Identity 

を使用する今、私はいくつかのAjax呼び出しのための新しいAsp.Net WebAPIのを使用していたコントローラでの認証目的のためにWindowsIdentityを必要としています。

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

答えて

24

コントローラーからHttpContextを参照しないでください。

コントローラUserプロパティにアクセスすることができます。このプロパティは、HttpContextへの参照なしでアイデンティティにアクセスする方法です。

public class MyController : ApiController 
{ 
    public string Get() 
    { 
     var indenty = this.User.Identity; 
    } 
} 

なぜ

コントローラUser性が容易モックひいてはユニットテストを可能にする抽象化のレベルを提供します。この抽象化はまた、より大きな可搬性を可能にする。これがWebApi Self Hostの場合は、HttpContextへのアクセス権もありません。

ユニットテストとモックの詳細については、hereをご覧ください。詳細については、移植性はhereを読んでください。

+2

1つの小さな説明:あなたがアイデンティティを使用する場合は、User.Identity – agez

+0

もちろんです。更新されました。 –

+1

答えの明快さに感謝します。コントローラからHttpContextを参照しない理由を説明すれば、誰もが啓発することができます。 – dansan

関連する問題