1

私は webApi を使用しており、フォーム認証を実装しようとしています。私のアプリケーションは simpleMembership を使用しています。何らかの理由で、アプリのデータベースに対して simpleMembership を使用する必要があるときに、コントローラーが Windows 資格情報に戻って、要求が認証されているかどうかを確認しています。

ここに画像の説明を入力

アプリと applicationhost 構成ファイルでウィンドウと匿名認証を無効にしました...他に何をする必要がありますか?

4

1 に答える 1

3

API コントローラーで、認証 (非パブリック コントローラーまたはアクション) を強制する必要がある場合は、

[Authorize]

... 必要に応じて、コントローラまたはアクション レベルで属性を指定します。これは、System.Web.Mvc の属性ではなく、System.Web.Http に実装された属性であることに注意してください。

APIコントローラーに使用するものは、System.Web.Mvc.AuthorizeAttributeが行うように、HttpContext.User.Identity.IsAuthenticatedの代わりにThread.CurrentPrincipal.Identity.IsAuthenticatedをチェックします。

通常、このリンクで説明されている DelegatingHandler を使用して、各リクエストでこのプリンシパルを設定する必要があります。

http://www.piotrwalat.net/basic-http-authentication-in-asp-net-web-api-using-message-handlers/

上記のリンクでは、作成者は基本 HTTP 認証を使用しています。これは、要求ごとに資格情報をプレーン テキストで送信します。ただし、プリンシパルを設定するために独自の認証戦略を実装できます。必要なのはこれだけです。

于 2013-04-14T13:37:26.287 に答える