Из средней статьи создателя Quart
: https://medium.com/@pgjones / websockets-in-quart-f2067788d1ee :
Аутентификация
Возможность контролировать приемку наиболее полезна при авторизации запросов, поскольку позволяет проверять заголовки запросов и принимать обновление или возвращать 401. Простой пример:
def auth_required(func):
@wraps(func)
async def wrapper(*args, **kwargs):
auth = websocket.authorization
if (
auth is not None and
auth.username == current.app.config['USERNAME'] and
compare_digest(
auth.password, current.app.config['PASSWORD'],
)
):
return await func(*args, **kwargs)
else:
abort(401)
return wrapper
@app.websocket('/ws')
@auth_required
async def ws():
...
Но как на стороне клиента javascript вызывает заполнение атрибута websocket.authorization
?
var ws = new WebSocket('ws://' + 'user' + ':' + 'pass' + '@' + document.domain + ':' + location.port + '/ws');
кажется устаревшим в последние пару лет пользовательские заголовки в HTTP-запросе для веб-сокета не поддерживаются.