Как обновить JWT Identity в flask? - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь создать представление учетной записи обновления, когда пользователь нажимает кнопку обновления. Я обновляю токен и получаю идентификацию jwt.

Однако идентификация jwt не меняется, пользователь остается таким же, как до обновления. БД обновляется, но идентификация jwt отсутствует.

Так как я могу обновить идентификацию? Если все, что у меня есть, это текущий токен jwt и refre sh токен.

Вот мои маршруты

@app.route('/current-user', methods=['GET'])
@jwt_required
def get_current_user():
    # Access the identity of the current user with get_jwt_identity
    try:
        current_user = get_jwt_identity()
        if current_user:
            return Response(json.dumps({"logged_in_as":current_user}), status=200, mimetype='application/json')
        else:
            return Response(json.dumps({"error":"Couldn't get user details"}), status=404, mimetype='application/json')
    except:
        return Response(json.dumps({"error":"Something went wrong"}), status=400, mimetype='application/json')

@app.route('/refresh', methods=['POST'])
@jwt_refresh_token_required
def refresh():
    current_user = get_jwt_identity()
    new_token = create_access_token(identity=current_user)
    ret = {'access_token': new_token,"logged_in_as":current_user}
    return Response(json.dumps(ret), status=200, mimetype='application/json')

1 Ответ

1 голос
/ 01 мая 2020

Идентификатор JWT полностью хранится в токене, он не извлекает эту информацию из базы данных, поэтому любые обновления в базе данных не будут отражены, пока не будет создан новый JWT.

Похоже, вы используете flask -jwt-extended. Вот как вы можете загружать пользователя из базы данных в каждом запросе, используя это расширение: https://flask-jwt-extended.readthedocs.io/en/stable/complex_objects_from_token/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...