8

毎回認証を要求するように .htaccess ファイルを設定する方法はありますか? 例: ブラウザーのタブを開き、pw で保護された URL に移動すると、pw の入力を求められます。タブを閉じて (メイン ブラウザは開いたまま)、上記を繰り返します。pw の入力を求めるプロンプトが再度表示されます。ブラウザを閉じない限り、これは起こりません。多分これはキャッシングのことですか?

これが私がこれまでに持っているものです:

AuthType Basic
AuthName "myName"
AuthUserFile "/home/myDir/.htpasswds/public_html/myName/passwd"
require valid-user

前もって感謝します。

4

1 に答える 1

7

実際にはこのように機能しています(簡略化):

  • ブラウザは資格情報なしでサーバーにリクエストを送信します
  • 「require valid-user」が指定されているため、Apache が 403 エラーで応答する
  • ユーザー名とパスワードのブラウザプロンプト
  • ブラウザが再度リクエストを送信します。今回は認証情報が提供されます
  • Apache は AuthUserFile に対して資格情報を検証し、それに応じて「有効なユーザー」を設定します
  • すべてが OK の場合 - ステータス コード 200 のデータを出力します
  • 200 コードを受け取るブラウザは、ブラウザ セッションが期限切れになるまで、関連するドメインの使用済み資格情報をキャッシュします。

ご覧のとおり、問題はブラウザにあります。ドメインに使用するパスワードをブラウザに強制的に忘れさせることはできません。また、通常、パスワードで保護されたページに画像が含まれている場合など、ダウンロードした画像ごとにブラウザーでユーザー名とパスワードが必要になることは望ましくありません。

ただし、試すことができるヒントがいくつかあります。

  • ユーザーがページにアクセスするたびにユーザーを承認する独自の Apache 承認ハンドラーを作成できます。しかし、実際に行うのは難しい
  • http 認証に頼る代わりに、ある種のフォームベースの認証 (php や asp.net などのスクリプトで) を使用できます。この方法は非常に柔軟です
  • 保護されたページにアクセスするたびに、ある種のスクリプトがpasswdファイル内のパスワードを変更するというトリックを行うことができます。次に、各ユーザーに 2 つのパスワードを提供し、要求ごとに切り替えます。この方法では、ブラウザは常に「間違った」パスワードを覚えています。クレイジーに思えますが、これは私が考えることができる最も簡単な解決策です:-)
于 2012-07-26T14:17:45.640 に答える