如何通过Javascript访问时使用werkzeug进行授权?

时间:2012-08-05 06:48:56

标签: javascript python flask werkzeug

我在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响应并停止应用程序,但应用程序不向用户返回任何内容,并且应用程序在未经授权的情况下开始工作。
我怎样才能解决这个问题?

提前致谢。

0 个答案:

没有答案