4

私はasp.net mvc 4 restを使用しており、独自のbasec認証ロジックを作成しています。

 public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext)
    {
        if (actionContext.Request.Headers.Authorization == null)
        {
            actionContext.Response = new System.Net.Http.HttpResponseMessage(System.Net.HttpStatusCode.Unauthorized);
        }
        else
        {
            //do staff here
        }
    }

ローカルiisで動作します。ただし、プロダクション ステーションでは機能しません。私はいつもnullになります。IIS で基本認証を有効に設定しました。私は Fiddler でテストしていますが、リクエストは次のようになります。

User-Agent: darwin/1.0 CFNetwork/548.1.4 Darwin/11.0.0
Authorization: Basic cmFkaWt2b3N0b2tAZ21haWwuY65tJjE6QkFBREVEcHlQYmtjQkFOcXh4UmFrdG1JMUJ2bjBPYXVQVk9NcnFZMEg4V3BhakljSlk2WkJMTWtra1FIWHFrcEZmdEkyNmFEZEppYWlKVVZJOTZpUGJuMzRMc1luemJHM2FPV3paQk5DTG1Xak9FZGU3YTdGWVhVem1QeTlEWkM4cW02YWZoWkJGWkIzbGFXMTNaQjlKdQ==
Content-Length: 10128
Accept: application/json
Content-Type: application/json
Connection: keep-alive
Host: 192.168.7.4

なぜそれが起こるのか誰か知っていますか?

4

1 に答える 1

4

まず、OnAuthorization()代わりに実装しOnActionExecuting()ます。 OnAuthorization()の前に実行されOnActionExecuting()ます。OnActionExecuting()ユーザーがコードに到達する前であっても、承認を確認することが重要です。

しかし、あなたの答え: 最も可能性のある状況は、実稼働web.configファイル<authentication>で「なし」に設定されていることです。次のように変更すると、すべての設定が完了します。

<authentication mode="Forms"/>
于 2012-12-27T20:19:45.643 に答える