私が書いた次のデコレータを使用して、 bottle.py で HTTP 基本認証を実行しようとしています:
def check_auth(username, password):
if username == 'admin' and password == 'pass':
return True
else:
return False
def authenticate(msg_string = "Authenticate."):
response.content_type = "application/json"
message = {'message': msg_string}
resp = jsonpickle.encode(message)
response.status = "401 - Unauthorized"
response.headers['WWW-Authenticate'] = 'Basic realm="PyBit"'
return resp
def requires_auth(f):
def decorated(*args, **kwargs):
print request.auth
auth = request.auth
if not auth:
return authenticate()
elif not check_auth(auth[0],auth[1]):
response.status = "401 - Unauthorized"
return authenticate("HTTP Authentication Failed.")
else:
return f(*args, **kwargs)
return decorated
組み込みの wsgiref サーバーでは機能しますが、mod_wsgi を使用して Apache でアプリを実行すると機能しません。その場合、「auth」オブジェクトは常に「None」です。
Apacheはそれをつまんでいますか?