我在Flask中实现了基本授权。 (references this snippet)它运作得很好。
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使用postmessage用户名和密码),此基本授权不起作用。
如果授权失败,应用程序应该向用户返回401响应并停止应用程序,但应用程序不向用户返回任何内容,并且应用程序在未经授权的情况下开始工作。
我怎样才能解决这个问题?
提前致谢。