Как проверить подлинность веб-сокетов Quart? - PullRequest
0 голосов
/ 24 января 2020

Из средней статьи создателя 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-запросе для веб-сокета не поддерживаются.

...