检查Flask-HTTPAuth是否在视图内通过了身份验证

Sha*_*ghi 3 python flask flask-httpauth

我正在使用Flask-HTTPAuth进行身份验证。我想从视图显示不同的数据,具体取决于请求是否已通过身份验证。装饰视图auth.login_required仅将其显示给已验证的用户。如何测试请求是否已通过Flask-HTTPAuth进行身份验证?

auth = HTTPBasicAuth()

@app.route("/clothesInfo")
@auth.login_required
def show_info():
    return jsonify(blah blah blah)
Run Code Online (Sandbox Code Playgroud)

Mig*_*uel 5

您想要的实际上很容易实现。在verify_password回调中,将''在用户不提供凭据时将用户名和密码设置为。您仍然可以True从该函数返回,这将允许匿名用户访问端点。

下面的示例演示了此技术:

auth = HTTPBasicAuth()

@auth.verify_password
def verify_password(username, password):
    if username == '' or password == '':
        # anonymous user, we still let them in
        g.current_user = None
        return True
    g.current_user = my_verify_function(username, password)
    return g.current_user is not None

@app.route("/clothesInfo")
@auth.login_required
def show_info():
    if g.current_user:
        # prepare data for authenticated users here
        pass
    else:
        # prepare data for anonymous users here
        pass
    return jsonify(data)
Run Code Online (Sandbox Code Playgroud)