Как я могу установить постоянный заголовок токена JWT во флаконе?

Я не могу найти способ установить токен JWT в качестве заголовка в каждом HTTP-запросе без помощи Javascript.

В настоящее время мое приложение настроено на использование методов set_access_cookies и unset_access_cookies для отслеживания сеанса. Однако простая деактивация файла cookie не делает его недействительным. Поэтому я хотел бы использовать JWT в заголовке, чтобы я мог использовать метод blacklist.add (), поскольку blacklist.add (), похоже, не может просматривать файлы cookie из моего тестирования.

Моя функция входа в систему:

@app.route('/v1/login', methods=['POST', 'GET'])
def auth_user():
    ''' auth endpoint '''
    if request.method == 'POST':
        data = validate_user(request.get_json())
        if data['ok']:
            data = data['data']
            user = mongo.db.users.find_one({'email': data['email']}, {"_id": 0})

            if user and flask_bcrypt.check_password_hash(user['password'], data['password']):
                access_token = create_access_token(identity=data)
                refresh_token = create_refresh_token(identity=data)

                resp = make_response(render_template('index.html'), 302)
                set_access_cookies(resp, access_token)
                return resp

            else:
                return jsonify({'ok': False, 'message': 'invalid username or password'}), 200
        else:
            return jsonify({'ok': False, 'message': 'invalid username or password'}), 200
    elif request.method == 'GET':
        return render_template('/api/v1/login.html')

Моя функция выхода:

@app.route('/v1/logout', methods=['POST'])
def logout():
    ''' logout user endpoint '''

    resp = jsonify({'logout': True})
    unset_jwt_cookies(resp)
    return resp, 200

Это отлично работает, но есть ли простой способ вместо этого разместить JWT в качестве постоянного заголовка?


person BlackAperture    schedule 18.07.2019    source источник
comment
Функциональность черного списка в flask-jwt-extended не заботится о том, идет ли токен из заголовка или файла cookie: flask-jwt-extended.readthedocs.io/en/latest/   -  person vimalloc    schedule 18.07.2019
comment
Да спасибо. Я забыл установить «JWT_COOKIE_CSRF_PROTECT» в своей конфигурации, чтобы мой POST-запрос на выход из системы возвращал «Неавторизованный» до того, как его можно было занести в черный список.   -  person BlackAperture    schedule 18.07.2019


Ответы (1)


Я забыл установить «JWT_COOKIE_CSRF_PROTECT» в своей конфигурации, чтобы мой POST-запрос на выход из системы возвращал «Неавторизованный» до того, как его можно было занести в черный список.

person BlackAperture    schedule 18.07.2019