Basic auth for Quart – python

Question:

I’m looking for using basic auth on Quart. I’m aware that quart-auth is available but it supports only cookies based authentication. Is there a way to use basic auth without resorting to use flask patch with Flask-BasicAuth ?

Asked By: Vijay

||

Answers:

This is how you can do it in Quart, (if you remove the async and await keywords and change quart to flask it will work for Flask as well).

from functools import wraps
from secrets import compare_digest

from quart import abort, current_app

def auth_required(func):

    @wraps(func)
    async def wrapper(*args, **kwargs):
        auth = request.authorization
        if (
            auth is not None and 
            auth.type == "basic" and
            auth.username == current_app.config["BASIC_AUTH_USERNAME"] and
            compare_digest(auth.password, current_app.config["BASIC_AUTH_PASSWORD"])
        ):
            return await func(*args, **kwargs)
        else:
            abort(401)

    return wrapper

# Usage

@auth_required
@app.route("/")
async def index():
     return ""
Answered By: pgjones
@app.route("/")
@auth_required

This order works for me

Answered By: patrizok