渡されたパラメーターに基づいて複数のコントローラークラスにアクセスするWebアプリケーションがあります。一部のコントローラーでは、ユーザーが(単純なHTTP認証によって)自分自身を認証するようにし、一部のコントローラーでは、パブリックアクセスが必要です。
これを実現する方法はありますか?私の.htaccessファイルには、
AddHandler mod_python .py
PythonHandler handler
PythonAuthenHandler handler
PythonDebug On
AuthType Basic
AuthName "My Realm"
AuthBasicAuthoritative Off
require valid-user
authenhandlerは正しく呼び出されますが、
def authenhandler(req):
return apache.OK
ユーザーはパスワードの入力を求められます(ただし、入力されたパスワードはすべて受け入れられます)
.htaccessからAuth*のもの(およびrequireディレクティブ)を完全に削除しようとしましたが、認証が必要な(そして見つからなかった)場合は、通常のハンドラーで次のようにしました。
request.err_headers_out.add('WWW-Authenticate', 'Basic realm="My Realm")
return apache.HTTP_UNAUTHORIZED
これは、正しい認証を受け取らなかったときにサーバーが何をすべきかを私が理解していることです。しかし、それもうまくいきませんでした。
私はPHPのバックグラウンドを持っており、後者がPHPで行われる方法であることを知っていますが、PHPは、このようなものを実際に機能させるために、文書化されていない魔法を余分に実行することがあります。これはそのようなケースの1つですか?
渡されたURLに応じて、同じハンドラーからオプションで認証を要求する方法はありますか?