首页 > 解决方案 > 如何使用 jwt 刷新令牌

问题描述

我正在使用 python flask_jwt_extended 来处理 jwt。我有一个刷新端点(来自文档),如下所示:

# The jwt_refresh_token_required decorator insures a valid refresh
# token is present in the request before calling this endpoint. We
# can use the get_jwt_identity() function to get the identity of
# the refresh token, and use the create_access_token() function again
# to make a new access token for this identity.
@app.route('/refresh', methods=['POST'])
@jwt_refresh_token_required
def refresh():
    current_user = get_jwt_identity()
    ret = {
        'access_token': create_access_token(identity=current_user)
    }
    return jsonify(ret), 200

我不确定何时应该在前端调用此端点。当我尝试使用受保护的端点时,我得到以下信息(这是预期的):

{
  "msg": "Token has expired"
}

我应该怎么知道在前端到期之前刷新令牌,它会怎么做?

标签: flaskjwtrefresh-tokenflask-jwt-extended

解决方案


因此,您通常做的是有 2 个端点,其中一个会发出令牌

还有一个发出刷新令牌的刷新

因此,在您第一次调用 JS 代码时,您将获得令牌。令牌通常包括 DateTime 或到期时间(例如以秒为单位)

然后在您的 JS 中,您将检查您的令牌还剩多少时间,如果时间不多,您应该调用您的 refrehtoken 路由以获取新令牌


推荐阅读