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