WebAPI の一般的な使用例は、データにアクセスするために API をヒットする JavaScript を含む MVC コントローラーによってシェル ビューをレンダリングすることです。
しかし、高価な API 操作がいくつかあり、それらのエンドポイントにリモートでアクセスする人を望まない場合、アプリケーションによって配信される MVC ビューのみがそれらにアクセスできるようにしたいとします。どうすればそれらを保護できますか?
この場合Request.IsLocal
、javascript がマシン上のクライアントのブラウザーから呼び出しているため、機能しません。それが機能したとしても、HttpContext
このプロパティを見つけるために実際の値を取得する必要があります。そのソリューションは、セルフホステッド WebAPI では機能しません。
有効な を必要とする API エンドポイントの場合、属性IPrincipal
でそれらを保護できます。[Authorize]
しかし、アプリが匿名ユーザーにアクセスできるようにする API エンドポイントについてはどうでしょうか?
私は解決策を試しましたが、それが最善の(または良い)アプローチであるかどうかわからないため、回答として個別に投稿します。