3.4 今度はもっと複雑なものを - 認証

基本的なハンドラの書き方を理解したところで、もう少し複雑なものに取り組んで みましょう。

ディレクトリをパスワードで保護したいとしましょう。ログイン名は"spam"、 パスワードは"eggs" にします。

まず、認証が必要な場合に 認証 (authentication) ハンドラを 呼び出すようApache に教えます。PythonAuthenHandler を使います。 従って、設定ファイルは以下のようになります:

  <Directory /mywebdir>
      AddHandler mod_python .py
      PythonHandler myscript
      PythonAuthenHandler myscript
      PythonDebug On
  </Directory>

二つのハンドラに対して同じスクリプトが指定されていることに注意してください。 ご存知のように、mod_python は異なるハンドラに対して異なる 名前の関数をスクリプトから探し出すので、これで構わないのです。

次に、Basic HTTP 認証を使い、有効なユーザだけが許可されるようApache に指示 します(これはかなり基本的なApacheの設定なので、ここでは詳しく説明しません)。 設定ファイルは以下のようになりました:

  <Directory /mywebdir>
     AddHandler mod_python .py
     PythonHandler myscript
     PythonAuthenHandler myscript
     PythonDebug On
     AuthType Basic
     AuthName "Restricted Area"
     require valid-user
  </Directory>

さて、今度は認証のハンドラ関数を myscript.py 内に記述しましょう。 認証ハンドラは以下のようになります:

from mod_python import apache

def authenhandler(req):

    pw = req.get_basic_auth_pw()
    user = req.user

    if user == "spam" and pw == "eggs":
       return apache.OK
    else:
       return apache.HTTP_UNAUTHORIZED

一行づつ見てゆきましょう: