0

フォーム認証を使用しているWebアプリケーションがあります。ログインフォームにリダイレクトしたくないページがあります。私はそのページのためにこれを持っています:

<location path="service1.svc">
  <system.web>
    <authorization>
      <allow users="?"/>
    </authorization>
  </system.web>
</location>

私の理解では、ユーザーが認証されていない(匿名)場合、page1.svcにアクセスしようとすると、ログインページにリダイレクトされませんが、私のアプリではリダイレクトされます。

ここで何かが足りませんか?

4

1 に答える 1

0

私はそれを考え出した!フォーム認証モジュールの動作方法は、EndRequest メソッドで発信応答をチェックし、ステータス コードが 401 (未承認) の場合、ステータス コードを 320 に変更してログイン ページにリダイレクトすることです。私の場合、フォーム認証ページが応答を取得する前に応答を操作する別のモジュールがあり、ステータスコードを 401 に設定して ntlm 認証交換を開始しました。しかし、フォーム認証は、交換が行われる前にそれを傍受しました。

この問題を回避するには、global.aspx ファイルで EndRequest メソッドを使用してステータス コードを 401 に戻します。これは、この時点でフォーム認証によって既に操作されているためです。私の場合、最初にステータス コードを 401 に設定する代わりに、407 に設定し、endRequest メソッドでキャッチして 401 に戻し、forms-auth モジュールをすべて回避しました。

于 2012-12-12T20:41:22.963 に答える