Базовая аутентификация для Quart — python

#python #basic-authentication #quart

#python #базовая аутентификация #кварта

Вопрос:

Я ищу использование basic auth для Quart. Я знаю, что quart-auth доступен, но он поддерживает только аутентификацию на основе файлов cookie. Есть ли способ использовать базовую аутентификацию, не прибегая к использованию flask patch с Flask-BasicAuth?

Ответ №1:

Вот как вы можете сделать это в Quart (если вы удалите async await ключевые слова and и измените quart flask их, это будет работать и для Flask).

 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 ""