Quart 的基本身份验证 - python
Basic auth for Quart - python
我正在寻找在 Quart 上使用基本身份验证。我知道 quart-auth 可用,但它仅支持基于 cookie 的身份验证。有没有一种方法可以在不借助 Flask-BasicAuth 使用 Flask 补丁的情况下使用基本身份验证?
这就是您在 Quart 中可以做到的,(如果您删除 async
和 await
关键字并将 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 ""
我正在寻找在 Quart 上使用基本身份验证。我知道 quart-auth 可用,但它仅支持基于 cookie 的身份验证。有没有一种方法可以在不借助 Flask-BasicAuth 使用 Flask 补丁的情况下使用基本身份验证?
这就是您在 Quart 中可以做到的,(如果您删除 async
和 await
关键字并将 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 ""