Flaskで基本認証を実装しました。(このスニペットを参照してください)それは本当にうまく機能します。
def check_auth(username):
user_id = get_user_id(username)
return user_id is not None
def authenticate():
"""Sends a 401 response that enables basic auth"""
return Response(
'Could not verify your access level for that URL.¥n'
'You have to login with proper credentials',
status=401,
headers={'WWW-Authenticate': 'Basic realm="Test"'}
)
def requires_auth(f):
"""Basic authorization decorator
"""
@wraps(f)
def decorated(*args, **kwargs):
auth = request.authorization
if not auth or not check_auth(auth.username):
return authenticate()
return f(*args, **kwargs)
return decorated
問題は、アプリケーションがJavascriptを介してアクセスされる場合(たとえば、JSを介したメッセージ後のユーザー名とパスワード)、この基本認証が機能しないことです。
承認に失敗した場合、アプリケーションはユーザーに401応答を返し、アプリケーションを停止する必要がありますが、アプリケーションはユーザーに何も返さず、アプリケーションは承認なしで動作を開始します。
どうすればこれを修正できますか?
前もって感謝します。